在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
初学RUBY时,一看各种稍微复杂一点的代码时很容易被RUBY各种约定的表示方法搞晕,这整理一下 。 (若标识符首位是小写字母或“_”,则该标识符就是局部变量或方法调用。) (以大写字母([A-Z])开始的标识符是常数、类名或者模块名) 以@开始的变量是实例变量,它属于特定的对象。可以在类或子类的方法中引用实例变量。 若引用尚未被初始化的实例变量的话,其值为nil。Ruby的实例变量无须声明,每个实例变量都是在第一次出现时动态加入对象。Ruby的实例变量通常在方法中定义类声明——当在方法里声明实例变量时,该实例变量实际上属于该方法所在类的实例,而不是属于该方法。例如 class Apple # 定义第一个方法 def info1 # 输出实例变量@a puts @a end # 定义第二个方法 def info2 # 为实例变量赋值 @a = "Hello"; end end # 创建Apple类实例 apple = Apple.new # 调用方法 apple.info2 apple.info1 以@@开始的变量是类变量。在类的定义中定义类变量,可以在类的特殊方法、实例方法等处对类变量进行引用/赋值: class Foo @@foo = 1 def bar puts @@foo end end 常数的区别如下。
类变量与类的实例变量的区别如下。
可以把类变量看作一种被类、子类以及它们的实例所共享的全局变量。 class Foo @@foo = 1 end class Bar < Foo p @@foo += 1 # => 2 end class Baz < Bar p @@foo += 1 # => 3 end
模块中定义的类变量(模块变量)被所有包含该模块的类所共享。 module Foo @@foo = 1 end class Bar include Foo p @@foo += 1 # => 2 end class Baz include Foo p @@foo += 1 # => 3 end
以$开始的变量是全局变量,可以在程序的任何地方加以引用(因此需要特别留意)。全局变量无需变量声明。引用尚未初始化的全局变量时,其值为 nil。
%表示法(百分号表示法): %{String} 用于创建一个使用双引号括起来的字符串 "%05d" % 123 » "00123" "%-5s: %08x" % [ "ID", self.id ] » "ID:200e1670" # 用来调用一个方法, *号: 若左边最后一个表达式前带*的话,则将右边多余的元素以数组的形式代入这个带*的表达式中。若右边没有多余元素的话,就把空数组代入其中。 *foo = 1, 2, 3 # foo = [1, 2, 3] foo,*bar = 1, 2, 3 # foo = 1; bar = [2, 3]
*用在方法定义中表示可变长的变量: 【FROM “ProgrammingRuby”】 Variable-Length Argument Lists But what if you want to pass in a variable number of arguments, or want to capture multiple arguments into a single parameter? Placing an asterisk before the name of the parameter after the ``normal'' parameters does just that. def varargs(arg1, *rest) "Got #{arg1} and #{rest.join(', ')}" end varargs("one") » "Got one and " varargs("one", "two") » "Got one and two" varargs "one", "two", "three" » "Got one and two, three"
irb(main):005:0> def call_back(*a) irb(main):006:1> a.each do |arg| irb(main):007:2* puts arg irb(main):008:2> end irb(main):009:1> end => nil irb(main):011:0> call_back(["hello",99]) hello 99 => [["hello", 99]] irb(main):012:0> call_back(["hello",99],"hello",99) hello 99 hello 99 => [["hello", 99], "hello", 99]
其他用法: C:\Users\Administrator>irb
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论