首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码中右箭头的作用是:"Ramaze.start :port => 80“

代码中右箭头的作用是:"Ramaze.start :port => 80“
EN

Stack Overflow用户
提问于 2009-05-02 23:16:35
回答 3查看 511关注 0票数 1
代码语言:javascript
复制
Ramaze.start :port => 80

如果我的理解正确的话,上面这行代码是Ruby中的一个方法调用,你也可以这样写:

代码语言:javascript
复制
Ramaze.start(:port => 80)

但是在任何一种情况下,当您将=>字符放在符号:port和数字80之间时,这意味着什么?

这是创建Hash的一种方式吗?

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

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

或者它作为两个参数接收::port和80?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-02 23:20:00

它创建一个hashmap,其中符号:port是键,值是80。

票数 8
EN

Stack Overflow用户

发布于 2009-05-03 00:23:21

如果您的方法的最后一个参数是散列,则大括号是可选的。

示例:

代码语言:javascript
复制
def foo options
  # ...
end

那么这是被允许的:

代码语言:javascript
复制
foo :bar => :baz

但如果你有:

代码语言:javascript
复制
def foo options, say_hi
  # ...
  if say_hi
    puts 'Hi!'
  end
end

那么你就不能这样做:

代码语言:javascript
复制
foo :bar => :baz, true

但你必须这样称呼它:

代码语言:javascript
复制
foo({:bar => :baz}, true)

虽然我不明白为什么在这种情况下需要括号,但它们似乎是必需的。

票数 4
EN

Stack Overflow用户

发布于 2009-05-02 23:40:47

它叫lambda。这是一种声明方法的简单方法。例如,我可以说myBirthday => myBirthday.Where(某个值)。请注意,您是如何将对象本身传递给缩短函数的。在本例中,您传入了一个port,并将其值设为80,然后返回port对象。

票数 -7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/815866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档