Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 3 years ago.
Improve this question
I want to set a variable if the variable is defined but if it's not defined, set it to nil.
def change(cursor:)
end
I used:
change(cursor: cursor || nil)
But I am getting this error:
NameError: undefined local variable or method `cursor'
Just enter nil as the default value.
def change(cursor: nil)
"cursor = #{cursor.nil? ? 'nil' : cursor }"
end
change(cursor: 'cat') #=> "cursor = cat"
change #=> "cursor = nil"
Related
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 1 year ago.
Improve this question
Have the function Cus_free_makers_eg1heChallenge(str) take the name parameter being passed to return "Hello Cristina!" if the name parameter is equal to "Cristina", return "Hello Kay!" if the name parameter is equal to "Kay" or "Hello there!" if the name parameter is equal to any other.
def Cus_free_makers_eg1heChallenge(str)
return str
end # keep this function call here
puts Cus_free_makers_eg1heChallenge(STDIN.gets)
Welcome to Stack Overflow! This is a bit off-topic, but first off, you should probably keep the method name shorter and simpler - probably not more than one or two words. Otherwise, when you call the method, it's a mouthful to type. The name should also describe what the method does, so the code is more readable.
Here is how I would write the method:
def hello(name)
if name == "Cristina" or name == "Kay"
return "Hello #{name}!"
end
"Hello there!"
end
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 7 years ago.
Improve this question
I want to check if param key exists with a variable name and if it exists I want to use value something like params[filenamestring[-1]].
filenamestring is any array generate with split
generally we use params like params[:key] but here i have array and want to use params value with array last element like params[filenamestring[-1]]
You are looking for this:
if params.key?(filenamestring[-1])
This will check if the key exists within the params.
Edit: Something like this would add the param to an array:
my_array << params[filenamestring[-1]] if params.key?(filenamestring[-1])
Or to add it to a string or integer:
my_variable + params[filenamestring[-1]] if params.key?(filenamestring[-1])
If you are doing something else, let me know and I'll update my answer again.
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
Well, i was trying this for 3 days, nothing found on web.
What i am doing is this:
stringValue = ""
function()
stringValue = "Test"
end
And then i am trying to get the value in another function by this:
function()
print(stringValue);
end
And it returns nothing, sometimes NIL sometimes blank.
I was thinking if someone could help me? I'm sorry if its already asked ... If it was, kindly give me link i am new here.
This should work, you have to invoke the function
stringValue = ""
function a()
stringValue = "Test"
end
function b()
print(stringValue);
end
a()
b()
Global variables are bad (in many cases)!
They increase coupling and ruin any design if used carelessly.
Just don't do it.
Apart from that, you haven't called your first function, if you did, you'd get the needed value.
Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
My user has the attribute:
:step1_local
:step2_local
:step3_local
...
...
:local1
:local2
:local3
I would like to change an attribute value based on another set of attributes on the same model. I would like to do some processing mapping on user, say:
def magic (user)
user.local(1..3) = process(user.step(1..3)_local)
end
The code above of course does not work (example). I am not sure how to do it dynamically without going through each attributes individually. I want to map processing one to another. Any ideas?
You can use Object#public_send and method, like this:
def magic(user)
(1..3).each do |n|
user.public_send("local#{n}=", process(user.read_attribute("step#{n}_local")))
end
end
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
Does someone know why
hash['City'] = {}
hash['City']['answer0'] = 'foo'
Get the following error:
undefined method `+#' for {"answer0"=>"foo"}:Hash
Thanks
If you want to have 'multi-dimentional' hashes you need to properly define the hash like so:
a = Hash.new { |hash, key| hash[key] = Hash.new(&hash.default_proc) }
Then you can do:
a['city']['answer0'] = 'foo'