首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查方法的参数是否由用户设置

检查方法的参数是否由用户设置
EN

Stack Overflow用户
提问于 2022-08-28 21:55:17
回答 1查看 56关注 0票数 0

是否有一种方法来检查方法的参数是由方法本身的默认值设置的,还是由调用该方法的用户设置的?

下面是我想在我的方法中做的事情,例如

代码语言:javascript
运行
复制
def json_prop(key, value = nil)
    json_data = {} if json_data.nil?
    return json_data[key] if value.set_by_user? # i.e. User did not set value to nil himself
    json_data[key] = value # Set to the value inserted by the user when calling the method
end
EN

回答 1

Stack Overflow用户

发布于 2022-08-29 05:03:54

要做到这一点有一个标准技巧,它依赖Ruby编程语言的两个特性:

  1. 可选参数的默认参数值是Ruby表达式,因此可以包含任意的Ruby代码,并且默认参数值表达式中定义的
  2. 局部变量在方法主体中的作用域中。

因此,我们所需要做的就是在默认的参数值表达式中设置一个变量,并且我们知道:如果设置了变量,则计算默认的参数值表达式,因此没有传递参数值:

代码语言:javascript
运行
复制
def json_prop(key, value = (no_value_set_by_user = true; nil))
  json_data = {} if json_data.nil?
  return json_data[key] if no_value_set_by_user
  json_data[key] = value
end

代码语言:javascript
运行
复制
def json_prop(key, value = (
  no_value_set_by_user = true
  nil
))
  json_data = {} if json_data.nil?
  return json_data[key] if no_value_set_by_user
  json_data[key] = value
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73522549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档