Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby——理解符号_Ruby_Ruby On Rails 3_Symbols - Fatal编程技术网

Ruby——理解符号

Ruby——理解符号,ruby,ruby-on-rails-3,symbols,Ruby,Ruby On Rails 3,Symbols,我在理解代码中的符号是如何工作的方面有点困难。我知道它们本质上是不可变的字符串,但我不完全理解符号如何自动“识别”代码的其他部分 例如,在下面的程序中,我将两个method对象传递给我的math_machine方法,但为此,我使用一个符号表示它们的名称。Ruby怎么知道我指的是那些方法 def plus x,y return x+y end def minus x,y return x-y end def math_machine(code,x,y) code.cal

我在理解代码中的符号是如何工作的方面有点困难。我知道它们本质上是不可变的字符串,但我不完全理解符号如何自动“识别”代码的其他部分

例如,在下面的程序中,我将两个method对象传递给我的math_machine方法,但为此,我使用一个符号表示它们的名称。Ruby怎么知道我指的是那些方法

def plus x,y
    return x+y
end

def minus x,y
    return x-y
end

def math_machine(code,x,y)
    code.call(x,y)
end

puts math_machine(method(:plus),5,5)
puts math_machine(method(:minus),5,5)
另一个我不理解的符号示例是关于封装的--
attr\u reader
attr\u writer
attr\u accessor
如何知道下面的符号引用了我程序中的实例变量

如果有人能向我解释Ruby中符号的神秘本质(幕后发生的事情),那就太棒了

例如,在下面的程序中,我 将两个方法对象传递给我的 数学是机器方法,但要做到这一点我 使用代表其名称的符号。 Ruby怎么知道我指的是什么 那些方法怎么样

def plus x,y
    return x+y
end

def minus x,y
    return x-y
end

def math_machine(code,x,y)
    code.call(x,y)
end

puts math_machine(method(:plus),5,5)
puts math_machine(method(:minus),5,5)
这与符号无关。您甚至可以执行
method('plus')
,您将得到与method(:plus)相同的结果

irb(主):001:0>def plus
irb(主):002:1>结束
=>零
irb(主):003:0>方法(:加)
=> #
irb(主):004:0>方法('plus')
=> #
irb(主):005:0>方法('plus')==方法(:plus)
=>正确
另一个我不知道的符号例子 理解是关于封装的 --attr_reader、attr_writer和attr_accessor如何知道符号 下面的引用了一个实例 我的程序中的变量

这些方法旨在为实例方法提供读取器、写入器和访问器(r+w)。他们只是获取传递的符号的值,并创建相关的方法。

您已经阅读了吗?