gpt4 book ai didi

Ruby 创建对象语法

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:23 26 4
gpt4 key购买 nike

我刚开始使用 Shoes,我对 ruby​​ 有一点了解,但我对对象和构造函数有些不太了解。

我学会了用这种方式创建对象:

@obj = SomeClass.new(:someParameter => 3)

现在 Shoes 希望我以这种方式创建对象:

Shoes.app do

@shape = star(points: 5)

motion do |left, top|
@shape.move left, top
end

end

还有一个例子:

require 'shoes'

class ListCell < Shoes::Widget
def initialize
stack :margin_left => 30, :top => 30 do

line 50, 100, 200, 200

end
end
end

Shoes.app :width => 500, :height => 400 do

stack do
@line = list_cell
end

end

为什么缺少 .new?为什么shoes在第一个例子中使用带冒号的语法传递参数?

在第二个示例中,我创建了一个 ListCell 对象,但我使用了没有 new 的语法 list_cell。为什么会这样?

这可能是一个非常基本的问题,但我正在尝试学习 ruby​​ 并且我有 VB.Net/Java 背景,有些东西对我来说很奇怪而且不是很常见。语法让我感到困惑。

最佳答案

它只是一个DSL。像 star 这样的方法将在底层调用 .new

冒号语法只是 Ruby 1.9.3 中引入的另一种哈希语法:

{ :a => :b }
{ a: :b }

这两行做同样的事情。

关于Ruby 创建对象语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23161160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com