irb 从数组中提取字符串



我正在 Nitro.io 的盒子里工作,所以我的环境是用最后的功能构建的。

启动 irb...

>name = "James", lname = "Smith"   
=> ["James", "Smith"]   

它创建一个包含这两个字符串的数组。我可以通过name[0]name[1]访问它们以获得我需要的输出

>"First name " + name[0] + ", Last name " + name[1]   
=>"First name James, Last name Smith"   

我需要通过访问数组中包含字符串的名称来获得相同的输出。
例:

>lname
=>"Smith"

但是,我如何才能像lname获得"史密斯"一样访问名字("詹姆斯"(?像这样:

>"First name " + ???? + ", Last name " + lname   
=>"First name James, Last name Smith"    

这句话是给我一个剧本来评价的:

>name = "James", lname = "Smith"   

我必须得到:

=>"First name James, Last name Smith"    

我无法改变任何东西。我只能在一行中输入进行评估。我尝试过失败(所有输出都正确,但脚本不接受它们(:

>"First name #{name[0]}, Last name #{name[1]}"    
>"First name " + name[0] + ", Last name " + name[1]     
>"First name " + name.first + ", Last name " + name.last    
>"First name " + name[0] + ", Last name " + lname    

我认为最好的方法是这四种中的最后一种,但要像lame一样更改name[0]

name = "James", lname = "Smith"

这以一种有点出乎意料的方式进行评估:

name = ["James", (lname = "Smith")]

因此,name被分配了一个"James"lname = "Smith"数组(计算结果为 "Smith" (。

因此,您已向上下文添加了 2 个值:

name = ["James", "Smith"]
lname = "Smith"

您没有访问名字的选项,只能将name的方法作为Array
name[0]name.first,仅此而已。

如果你只想创建两个变量,那么这个带有逗号的东西比你需要的要复杂得多。

irb(main):001:0> first_name = "James"
=> "James"
irb(main):002:0> last_name = "Smith"
=> "Smith"
irb(main):003:0> "First name " + first_name + ", Last name " + last_name
=> "First name James, Last name Smith"
irb(main):004:0> 

尝试使用以下语法进行多变量赋值。

name, lname = "James", "Smith"

它会更有效,因为您不需要像 name[0] 那样通过索引获取值。您将能够使用直列变量获取这两个值

您可以将其写为:

name = "James"; lname = "Smith"

请注意,我使用的是分号,而不是逗号。 分号是 ruby 中的语句终止符。

现在您可以使用这些变量,例如:

> "First name " + name + ", Last name " + lname
=>"First name James, Last name Smith"  
您可以使用

Array方法.first.last

name = "James", "Smith"
#=> ["James", "Smith"]
name.first
#=> James
name.last
#=> Smith

鉴于您无法更改起始输入....

irb(main):001:0> name = "James", lname = "Smith"
=> ["James", "Smith"]
irb(main):002:0> fname = name.first
=> "James"
irb(main):003:0> "First name " + fname + ", Last name " + lname
=> "First name James, Last name Smith"

您还可以使用:

irb(main):004:0> name.first
=> "James"
irb(main):005:0> name.last
=> "Smith"

最新更新