gpt4 book ai didi

ruby - Ruby 的局部变量和方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:30:38 25 4
gpt4 key购买 nike

我在使用 Ruby 中的数组进行更改时遇到问题。该方法无法使用全局方法。我在这里很困惑,希望得到一些帮助。如何从用户那里获得答案并使用该答案?

a = [1,2,3,4,5]

puts "Pick number to insert into array:"
number = gets.chomp()

def insert(answer, number)
a.insert(1,number)
end

insert(answer,number)

当然我得到了错误:

methods.rb:13:in `insert': undefined local variable or method `a' for main:Object (NameError)
from methods.rb:16:in `<main>'

最佳答案

变量 a 没有在 insert 方法的范围内定义。

ruby中有几种类型的变量,可以总结为the following table :

$            A global variable
@ An instance variable
[a-z] or _ A local variable
[A-Z] A constant
@@ A class variable

为了让您的代码正常工作,您可以将 a 定义为全局变量(尽管这通常被认为是不好的做法!):

$a = [1,2,3,4,5]

puts "Pick number to insert into array:"
answer = gets.chomp()

def insert(answer)
$a.insert(1, answer)
end

insert(answer)

或者,您可以在方法范围内定义a:

puts "Pick number to insert into array:"
answer = gets.chomp()

def insert(answer)
a = [1,2,3,4,5]
a.insert(1, answer)
end

insert(answer)

或者,您可以将 a 作为参数传递给该方法:

puts "Pick number to insert into array:"
answer = gets.chomp()

def insert(a, answer)
a.insert(1, answer)
end

a = [1,2,3,4,5]
insert(a, answer)

或者,您可以定义一个类并使 a 成为该类的实例变量 - 例如,类似于:

class HelloWorld
attr_reader :a
def initialize
@a = [1,2,3,4,5]
end

def insert(answer)
@a.insert(1, answer)
end
end

puts "Pick number to insert into array:"
answer = gets.chomp()

my_awesome_object = HelloWorld.new
my_awesome_object.insert(answer)
puts my_awesome_object.a

关于ruby - Ruby 的局部变量和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38077429/

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