Ramaze.start :port => 80
如果我的理解是正确的,上面的行是Ruby中的方法调用,你也可以把它写成:
Ramaze.start(:port => 80)
但在任何一种情况下,当你把=>这是什么意思符号:端口和数字80之间的字符?
这是创建哈希的方法吗?
当Ramaze.start方法接收到方法参数时,参数的类型是什么?
它是作为单个参数键值对接收的吗?
或者它收到两个参数:port和80?
答案 0 :(得分:8)
它创建一个hashmap,其中symbol:port是键,值为80。
答案 1 :(得分:4)
当你有一个方法,其中最后一个参数是一个哈希,大括号是可选的。
示例:
def foo options
# ...
end
然后允许这样做:
foo :bar => :baz
但如果你有:
def foo options, say_hi
# ...
if say_hi
puts 'Hi!'
end
end
然后你不能这样做:
foo :bar => :baz, true
但是你必须把它称为:
foo({:bar => :baz}, true)
我无法弄清楚为什么在那个例子中需要括号,但它们似乎是。
答案 2 :(得分:-7)
它被称为lambda。这是一种声明方法的简短方法。例如,我可以说myBirthday => myBirthday.Where(某些价值)。请注意您如何将对象本身传递到缩短的函数中。在你的情况下,你传入一个端口,给它一个值80,然后返回端口对象。