首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ruby Programming | 连载 02 - Ruby 语法基础

(等号左边)上,即把对象看做一个用变量表示的值 比较运算 x==y2>12是否相等时使用的是两个等号,使用一个等号表示赋值 字符串 -> 数值 "1".to_i"20".to_i 字符串对象的...全局变量以 开头,如 year, 之后的变量名不使用局部变量的命名规则,也就是说全局变量中可以包含特殊字符,如 1、* 实例变量为独立的 对象 存储信息,通常以一个单独的 @ 符号开头,后面使用与局部变量相同的命名规则...,不同的是实例变量在 @ 符号之后的第一个字符可以大写,但是不同使用数字;通常来说还是 @ 之后的第一个字母还是使用小写字母。...如 @name、*@age* 类变量是在每一个类层级上存储信息,要区分于实例变量在对象层级上存储信息;对象是由类实例化而来的。类变量以 @@ 开头,使用与局部变量相同的命名规则。...Ruby 常量命令规范中,常量名由多个单词组成可以是使用驼峰命名法(FirstName)也可以使用下划线命名,使用下划线必须要下划线分割的所有单词的首字母大写(First_Name)。

5.9K10

Java转Ruby【快速入门】

至少我们可以直观的感受到: 不用生命变量,直接 = 就好 每条 Ruby 代码都会返回某个值 从 Java 到 Ruby Java 非常成熟,并且通过 Spring 的加持得到了许多企业的青睐,但是不知道大家有没有感受到一点...Ruby 有四种类型的变量,变量的命名方式决定了变量的种类: 局部变量 以英文小写字母或者 _ 开头,作用域等同于 Java 局部变量。...它属于类的一个实例,可以从方法中的类的任何实例访问。 它们只能访问一个特定的类的实例。它们不需要初始化,未初始化的实例变量的值是:nil 。...attr_reader 对应在 Java 中相当于为 first_name 和 last_name 定义了 getter ,在 Ruby 中,从对象外部不能直接访问实例变量或对实例变量赋值,需要通过方法来访问对象的内部...暂时你可简单的理解为一个不能实例化的类,这样做的好处是一来可以提供一个命名空间避免名字冲突,另一个是实现了 mixin 的功能。

3.2K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    python入门基础

    请问tu变量中的第一个元素 “alex” 是否可被修改?   元组不可直接被修改,需要转换成列表或字典 b. 请问tu变量中的"k2"对应的值是什么类型?是否可以被修改?...如果可以,请在其中添加一个元素 “Seven”   k2是字典的键,对应的值是列表可修改:tu[1][2]['k2']='Seven' c. 请问tu变量中的"k3"对应的值是什么类型?...是否可以被修改?...如果可以,请在其中添加一个元素 “Seven”   k3是字典的键,对应的值是元组不可修改 2.4 字典类型 字典是包含0个或多个键值对的集合,没有长度限制,可以根据键索引值的内容。...字典的基本原则 字典是一个键值对的集合,该集合以键为索引,一个键对应一个值信息 字典中的元素以键信息为索引访问 字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。

    2.4K70

    python基础知识入门_python新手学院

    请问tu变量中的第一个元素 “alex” 是否可被修改?   元组不可直接被修改,需要转换成列表或字典 b. 请问tu变量中的”k2″对应的值是什么类型?是否可以被修改?...如果可以,请在其中添加一个元素 “Seven”   k2是字典的键,对应的值是列表可修改:tu[1][2][‘k2′]=’Seven’ c. 请问tu变量中的”k3″对应的值是什么类型?...是否可以被修改?...如果可以,请在其中添加一个元素 “Seven”   k3是字典的键,对应的值是元组不可修改 2.4 字典类型 字典是包含0个或多个键值对的集合,没有长度限制,可以根据键索引值的内容。...字典的函数和方法 字典的基本原则 字典是一个键值对的集合,该集合以键为索引,一个键对应一个值信息 字典中的元素以键信息为索引访问 字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。

    2.7K20

    Ruby学习笔记

    变量:局部变量(小写字母或_开头)、全局变量($)、实例变量(@)、类变量(@@)、虚拟变量。      Ruby中的变量在声明时,也不需要指定类型,这有点类似于弱类型语言的PHP。...但是在变量被使用时,他的类型就会被确定。 常量:以大写字母开头的变量就是常量 Ruby 中的保留字 ? Ruby中一般以换行来做为语句分割,也可以使用;来作为语义的分割符。...模块可以在类中引入,这样模块的方法就会成为类的方法。可以使用这个小技巧来实现Ruby的多重继承。 Ruby中的方法(函数)      Ruby中的方法区分为实例的方法、类的方法、函数性方法。...Hash的key理论上可以是任何对象,但是实际当中,我们一般选择Numberic、String、Date等做为key值,因为这样的key值在比较中更为准确,而其他的对象是否一致的比较则相对复杂。...通过 ri options names 的方式,可以查看ruby的文档,真是非常方便啊! irb 使用irb进行交互式的编程。

    2K20

    《Effective-Ruby》读书笔记

    设置环境变量 RUBYOPT 为 ”-w“ 也可以达到相同目的。 如果必须禁用运行时的警告,可以临时将全局变量 $VERBOSE 设置为 nil。...第 11 条:通过在模块中嵌入代码来创建命名空间 通过在模块中嵌入代码来创建命名空间 让你的命名空间结构和目录结构相同 如果使用时可能出现歧义,可使用 ”::” 来限定顶级常量(比如,::Array)...方法设置为 "==" 操作符的别名,特别是当你希望该类的所有实例可以被用来作为哈希键的时候,就应该重载哈希方法 第 14 条:通过 protected 方法共享私有状态 通过 protected 方法共享私有状态...优先使用实例变量(@)而非类变量(@@) 类也是对象,所以它们拥有自己的私有实例变量集合 第三章:集合 第 16 条:在改变作为参数的集合之前复制它们 在 Ruby 中多数对象都是通过引用而不是通过实际值来传递的...你可以通过环境变量 RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR 来设定这个因子 oldmalloc_increase 和 oldmalloc_limit 是上面两个对应的年老代值

    4K60

    Python应该要会一点吧

    flush: whether to forcibly flush the stream. 2变量和简单数据类型 变量的命名和使用 变量名只能包含字母、数字和下划线。...PEP 8(Python Enhancement Proposal 8)向Python程序员提供了代码格式设置指南,一般编辑器里都有相关的设置,如Pycharm,一个TAB等于4个空格(可以在设置里修改..., 6) #创建实例 my_dog.name #使用句点表示法访问实例的属性 my_dog.sit() #调用方法 #可按需求根据一个类创建任意数量的实例, #条件是将每个实例都存储在不同的变量中,或占用列表或字典的不同位置...类编码风格 类名应采用驼峰命名法,即将类名中的每个单词的首字母都大写,而不使用下划线。实例名和模块名都采用小写格式,并在单词之间加上下划线。...对于每个类,都应紧跟在类定义后面包含一个简要地描述类的功能的文档字符串。每个模块也都应包含一个文档字符串,对其中的类可用于做什么进行描述。

    1.8K10

    【python进阶】Garbage collection垃圾回收1

    请注意我⼀直在为变量n1赋新值,Ruby把旧值留在原处。"ABC","JKL"和"MNO"三个Node实例还滞留在内存中。Ruby不会⽴即清除代码中不再使⽤的旧对象!...⾸先Ruby把程 序停下来,Ruby⽤"地球停转垃圾回收⼤法"。之后Ruby轮询所有指针,变量 和代码产⽣别的引⽤对象和其他值。同时Ruby通过⾃身的虚拟机便利内部指针。标记出这些指针引⽤的每个对象。...现在,让我们在节点中定义两个附加的属性,next以及prev: ? 跟Ruby不同的是,Python中你可以在代码运⾏的时候动态定义实例变量或对象属性。这看起来似乎有点像Ruby缺失了某些有趣的魔法。...(声明下我不是 ⼀个Python程序员,所以可能会存在⼀些命名⽅⾯的错误)。我们设置 n1.next 指向 n2,同时设置 n2.prev 指回 n1。...通过这种⽅法,你的代码所⻓期使⽤的对象,那些你的代码持续访问的活跃 对象,会从零代链表转移到⼀代再转移到⼆代。通过不同的阈值设置, Python可以在不同的时间间隔处理这些对象。

    1K70

    Python中反人类直觉的特性,你踩过坑吗?

    字符串的驻留是隐式的,不受我们控制,但是我们可以根据一些规律来猜测是否发生字符串驻留: 所有长度为 0 和长度为 1 的字符串都被驻留 字符串中只包含字母,数字或下划线时将会驻留。所以 'tom!'...不是按照上面提到的方式被隐式驻留的). 它是一种编译器优化, 特别适用于交互式环境 当在同一行将 a 和 b 的值设置为 "tom!"...[5.5] # 输出:Ruby some_dict[5.0] # 输出:Python some_dict[5] # 输出:Python Python字典通过检查键值是否相等和比较哈希值来确定两个键是否相同...因此, 所有的函数都是使用最后分配给变量的值来进行计算的 可以通过将循环变量作为命名变量传递给函数来获得预期的结果. 为什么这样可行?...another_obj.another_list is SomeClass.another_list) print(another_obj.another_list is some_obj.another_list) 类变量和实例变量在内部是通过类对象的字典来处理

    1.2K10

    开源图书《Python完全自学教程》8.3.2实例属性

    此处修改了 j.name 的值,r.name 的值是否因此而变化?...>>> r.name 'ruby' 因为 j 和 r 是两个对象,只是从同一个类实例化而得,它们具有同样名称的 name 属性罢了,而此属性的值互不影响。 继续使用赋值语句,也能为实例增加属性。...__dict__ {'name': 'ruby'} 通过实例名称能对该实例的属性进行修改、增加、删除操作。在8.3.1节已经看到,通过实例名称也能访问到类属性名称。...那么,是否可以对该类属性的值进行修改呢?比如: >>> j.lang 'pascal' 若做如下操作,结果会如何?...,不论类属性还是实例属性,都是变量——只不过变量的命名方式有点特别,这些变量引用了某个对象。

    38030

    开源图书《Python完全自学教程》8.3.1类属性

    这里定义的类 Foo 中有一个独立于方法之外的赋值语句(注释(1)所示),这个赋值语句中的变量 lang 称为类 Foo 的类属性。顾名思义,“类属性”就是“从属于类的属性”,可以通过类名称访问。...>>> Foo.lang 'python' 从本质上看,注释(1)就是赋值语句,因此可以理解为 Foo.lang 这个变量引用了字符串对象 'python' 。...不妨将“类属性”类比于产品的标准配置——每个产品在生产出来之后都具有的特性。在创建实例的时候,类属性会自动配置到每个实例中,即:通过实例也可以访问该属性——但它不是从属于实例的属性,切记!。...通过类名称(或者说类对象)修改了类属性的值,如果再用实例访问这个属性,发现其值也已经改变。...>>> j.lang 'pascal' >>> r.lang 'pascal' 这再次说明,属性 lang 不是在实例化的时候创建的,而是随着类的创建存在的。 还可以通过类名称增加类属性。

    39430

    【Ruby高级技术】对面向对象里的控制访问,包括类的继承类常量的深入理解和使用

    控制访问 Ruby为提供了三个级别的实例方法保护:公共、私有或受保护。Ruby不对实例和类变量应用任何访问控制。 公共方法:任何对象都可以调用公共方法。...在Object中,冻结方法可以实现这一点。它可以有效地将对象转换为常量。任何对象都可以调用对象冻结。不能修改冻结对象,即不能更改其实例变量。 可以使用对象冻结?方法检查给定对象是否已冻结。...如果对象已被冻结,则此方法将返回true;否则,它将返回一个假值。 类常量 通过将直接数值或字符串值赋给变量,可以在类中定义常量。不需要使用@或@@来定义常量。按照惯例,常数的名称是大写的。...一旦定义了常量,就不能更改其值。可以直接访问类内的常量,就像访问变量一样。...Java方法在实例方法中被引用,因此这通常指向当前对象。Ruby代码逐行执行,因此self在不同的上下文中具有不同的含义。 这意味着可以通过将类作为当前对象来执行类定义。

    65030

    Python:What the f*ck Python(上)

    有一些方法可以用来猜测字符串是否会被驻留: 所有长度为 0 和长度为 1 的字符串都被驻留(①中字符串被驻留) 字符串在编译时被实现('wtf' 将被驻留,但是 ''.join(['w', 't', '...而未被驻留 当在同一行将 a 和 b 的值设置为 "wtf!" 的时候,Python 解释器会创建一个新对象,然后两个变量同时指向这个对象。...字典检查键值是否相等是通过比较哈希值是否相等来确定的。...而 board 中的三个元素都指向 row,row 的地址并没有改变。 我们可以通过不使用变量 row 生成 board 来避免这种情况。...因此,所有的函数都是使用最后分配给变量的值来进行计算的。 可以通过将循环变量作为命名变量传递给函数来获得预期的结果。为什么这样可行?因为这会在函数内再次定义一个局部变量。

    1.4K20

    Ruby 和 Java 的基础语法比较

    " 定义实例方法 Ruby 定义方法非常简单,没有 Java 那么多的格式规范:修饰符:静态声明:返回值:方法名:(参数...)...# 带默认值的方法 def add(x=2, y=6) x * y end # 省略参数使用默认值调用方法 add #=> 12 # 指定参数的方法 add(2, 5) #=> 10 在方法的命名规则...简单通过 2 段代码的对比,我们可以对两种语言的方法参数得出以下结论: Java 方法会严格按照定义,强制要求类型,值必传,否则编译期会报错,并且无法在声明时定义参数的默认值 Ruby 方法参数未设定默认值...Ruby 类只有 initialize 构造函数,Java 可以根据参数不同定义不同的构造函数,Java 构造函数必须于类名相同 Ruby 和 Java 在类的命名规则上是一致的,类名必须是首字母大写开头...,方法和变量) 调用方式:Ruby 必须使用 :: 通过类名进行外部访问常量,java 把常量只是当成普通的局部变量,使用连接符 .

    2.2K20

    JavaScript 对象

    在 JavaScript 中,对象是非常重要的,当你理解了对象,就可以了解 JavaScript 。 你已经学习了 JavaScript 变量的赋值。...以下代码为变量 car 设置值为 "Fiat" : var car = "Fiat"; 对象也是一个变量,但对象可以包含多个值(多个变量),每个值以 name:value 对呈现。...var car = {name:"Fiat", model:500, color:"white"}; 在以上实例中,3 个值 ("Fiat", 500, "white") 赋予变量 car。...对象键值对的写法类似于: PHP 中的关联数组 Python 中的字典 C 语言中的哈希表 Java 中的哈希映射 Ruby 和 Perl 中的哈希表 ---- 访问对象属性 你可以通过两种方式访问对象属性...该实例访问了 person 对象的 fullName() 方法: 实例 name = person.fullName(); 如果你要访问 person 对象的 fullName 属性,它将作为一个定义函数的字符串返回

    69020

    python笔记(一)

    ():删除行首和行末的空白(空格和制表符)(直接输入变量返回值才能看到,否则看不到效果) .lstrip():删除左边,即行首 .rstrip():删除友边,即行末 合并字符串直接用加号:+ 转义(不管单双引号都生效...,"ccc") 删除:del VAR[索引位置](后边的索引会顶替删除的索引) .remove(值):根据值删除,只删除一次就停止,如果删除多个同样的值需要用循环判断是否删除干净 弹出列表中最后一个元素...=True) 倒着打印列表:.reverse() 反转列表:reverse(列表) 获取列表长度:len(列表) 遍历列表:for i in 列表: 最好的命名方式,列表取复数,遍历变量取单数...= 大\小(等)于:>、= 条件与:and(and两边要有空格,和变量分开)(and两边的潘丹条件可使用小括号包裹起来) 条件或:or 判断一个特定的值是否在列表中...使用实例:(判断是否在列表中) requested_toppings = ['mushrooms', 'extra cheese'] if 'mushrooms' in requested_toppings

    1.5K30

    -公共函数和全局常量

    返回: 运行环境变量, 默认值, 或者 null. 返回类型: mixed 用于检索事前设置在环境变量中的变量值,若无设置则返回默认值....若没有找到健值则返回一个布尔值结果(false). 在特定的运行环境中利用 .env 文件设置环境变量非常有用,例如数据库设置,API健值等....returns: 给定的键对应的值,或设置的默认值 returns: 给定的键对应的值,或设置的默认值 returns: 给定的键对应的值,或设置的默认值 返回类型: mixed $escape (mixed...$response (ResponseInterface) – 当前响应对象的实例。 检查页面当前是否通过HTTPS访问,如果不是,则用户通过HTTPS重定向回当前URI。...– 是否移除URL编码字符 返回: 已过滤的字符串 返回类型: string $str (string) – 输入字符串 $urlEncoded (bool) – 是否移除URL编码字符 返回:

    3K20

    画说 Ruby 与 Python 垃圾回收

    最近Ruby社区发表了一篇博文,是关于如何通过更改Ruby GC设置来为单元测试提速的。我认为这篇文章是极好的。...随着我们创建越来越多的对象,Ruby会持续寻可用列表里取预创建对象给我们。因此,可用列表会逐渐变短: ? 或者更短: ? 请注意我一直在为变量n1赋新值,Ruby把旧值留在原处。"...值为1说明分别有个一个指针指向或是引用这三个对象。假如我们现在创建一个新的Node实例,JKL: ? 与之前一样,Python设置JKL的引用数为1。...首先Ruby把程序停下来,Ruby用"地球停转垃圾回收大法"。之后Ruby轮询所有指针,变量和代码产生别的引用对象和其他值。同时Ruby通过自身的虚拟机遍历内部指针。标记出这些指针引用的每个对象。...而是通过调整内部指针,将其指向一个新链表的方式,来将垃圾对象归位到可用列表中的。 现在等到下回再创建对象的时候Ruby又可以把这些垃圾对象分给我们使用了。

    70910
    领券