gpt4 book ai didi

ruby - Ruby 中的速记,Artoo.io

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

我正在寻找关于 artoo.io 顶部发生的事情的解释。机器人。这个例子的顶部有一个使用键盘驱动程序的声明:

require 'artoo'

connection :keyboard, adaptor: :keyboard
device :keyboard, driver: :keyboard, connection: :keyboard

似乎显示了一些速记/替代语法,我很想知道该速记的解释。我理解另一种哈希语法::adapter => :keyboard

上面最后两行代码是怎么回事?什么是连接?正在初始化的是 artoo 中的类吗?为什么没有 new:keyboard 从哪里来?如果有更明确地表示关系的替代语法,您能否也展示一下?

最佳答案

这是一个很好的问题。它可能是重复的,但我找不到,对于刚接触 Ruby 的聪明程序员来说,这是一种棘手的事情。

首先,针对您的问题:什么是connection

这是一个方法调用。在某些情况下,很难区分什么是方法,什么是变量,因为这仅取决于它们是如何定义的。但在这种情况下很清楚,因为 connection 后面有参数。在 ruby​​ 中,可以这样调用一个方法:

foo

在那种情况下,它是一个不带参数的方法。或者它可以看起来像这样:

foo 1, 2, 3

这是一个带有三个参数的方法。或者它可以看起来像这样:

foo(1, 2, 3)

这是相同的方法,但语法略有不同(使用 c、C++、Java、Javascript、C# 等类似 c 语言的人更熟悉这种语法)

因此,当您看到参数列在一个裸词之后,中间没有运算符时,这就是一个确定的信号,这是一个方法调用。

现在完全分解您的代码。

require 'artoo'

从技术上讲,这是一个方法调用。您正在调用 require 方法并传递文字字符串 'artoo' 的单个参数。您可能知道,require 将外部 ruby​​ 文件加载到当前文件中。

connection :keyboard, adaptor: :keyboard

这是一个带有一些 syntactic sugar 的方法调用:

您马上就知道 connection 是一个方法调用,因为它后面有参数(即 connection 和后面的内容之间没有运算符)。但是什么参数?

:keyboard: 是一个 Symbol , ruby​​ 相当于 intern'd string .

适配器::keyboardHash .

Ruby 有两种主要的哈希语法:

{key => value}

其中 keyvalue 是任何对象,或者:

{key: value}

其中 key 是纯文字符号,value 是任何对象。此外,为了保持代码整洁,当您将哈希作为 last 参数传递给方法时,您可以省略 {},因为这是明确的。它最终给你一个干净的“命名参数”风格的方法调用:

do_something_to my_person, kindness: 10, aggressiveness: 2

在您的代码中:

connection :keyboard, adaptor: :keyboard

您有备用哈希语法(符号键),其中 {} 被关闭。整行 100% 等同于:

connection(:keyboard, {:adaptor => :keyboard})

你的最后一行:

device :keyboard, driver: :keyboard, connection: :keyboard

是同一个东西。相当于:

device(:keyboard, {:driver => :keyboard, :connection => :keyboard})

它看起来更好(一旦你习惯了)。

关于ruby - Ruby 中的速记,Artoo.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24018726/

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