右箭头在此代码中的作用是什么:“Ramaze.start:port => 80”

时间:2009-05-02 23:16:35

标签: ruby syntax

Ramaze.start :port => 80

如果我的理解是正确的,上面的行是Ruby中的方法调用,你也可以把它写成:

Ramaze.start(:port => 80)

但在任何一种情况下,当你把=>这是什么意思符号:端口和数字80之间的字符?

这是创建哈希的方法吗?

当Ramaze.start方法接收到方法参数时,参数的类型是什么?

它是作为单个参数键值对接收的吗?

或者它收到两个参数:port和80?

3 个答案:

答案 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,然后返回端口对象。