باستخدام قيمة المتغير كاسم متغير آخر في Ruby
-
22-09-2019 - |
سؤال
لقد بدأت للتو في تعلم Ruby وقد كتبت برنامجًا يقوم بإنشاء بعض الأرقام ويعينها للمتغيرات @One و Two و @Three وما إلى ذلك. يمكن للمستخدم تحديد متغير لتغييره عن طريق إدخال اسمه (على سبيل المثال واحد). أحتاج بعد ذلك إلى القيام بشيء مثل "@[valuefinout] = ASD". كيف يمكنني القيام بذلك ، وهل هناك طريقة أفضل لأن الطريقة التي أفكر بها تبدو محبطًا؟ لقد وجدت
x = "myvar"
myvar = "hi"
eval(x) -> "hi"
لكنني لا أفهم تمامًا سبب الحاجة إلى السطر الثاني. في حالتي ، سأستخدم شيئًا مثل
@one = "21"
input = "one"
input = "@" + input
changeto = "22"
eval(input) -> changeto
المحلول
يستخدم instance_variable_set
(روبيوك)
instance_variable_set("@" + varname, value)
في معظم الحالات ، يجب عليك فصل متغيرات Ruby العادية عن المتغيرات التي يتفاعل معها المستخدم. ماذا عن إنشاء تجزئة من متغيرات المستخدم ، على سبيل المثال
@uservars = { 'one' => 1, 'two' => 2 }
two = @uservars['two'] # Look up 'two' variable
varname = "myvar"
@uservars[varname] = 5 # Set a variable by name
value = @uservars[varname] # Get a variable by name
نصائح أخرى
يمكن استرداد متغيرات المثيل عبر هذه الطريقة:
input = instance_variable_get("@one")
بعد ذلك ، في حالتك سيكون لديك input
يساوي "21".
لا تنتمي إلى StackOverflow