新手问题 该如何理解符号作为实参传入方法呢?

maxchen · September 22, 2018 · Last by pinewong replied at September 23, 2018 · 959 hits
#!usr/bin/env ruby

def each(i=1,&block)
    puts i
    block.call(i)
end

value = 5

each :value do |i|
    puts "#{i}"
end

输出结果如下:

value
value

请问该如何理解符号作为实参传入方法呢?

把 value = 5 这一行去掉就好理解了

Reply to pinewong

也就是说符号作为实参传进去只能作为字符串处理,类似于起到了 switch 的作用是吗?

puts :value # => value
puts "#{:value}" # => value

有什么不对吗?

符号是有别于字符串和整数的另一个基本类型,不指代变量也不等价于字符串。

常量和变量的区别是什么?

Reply to maxchen

对,跟你定义的变量 value 没有任何关系

You need to Sign in before reply, if you don't have an account, please Sign up first.