【发布时间】:2019-08-06 19:36:44
【问题描述】:
所以,我使用 Ruby on Rails 已经有一段时间了,我想知道 Python/Django 中是否有类似 .presence 的东西。
Presence 如果接收者存在则返回接收者,否则返回nil。
object.presence 等价于:
object.present? ? object : nil
例如:
state = params[:state] if params[:state].present?
country = params[:country] if params[:country].present?
region = state || country || 'US'
becomes
region = params[:state].presence || params[:country].presence || 'US'
安东尼
【问题讨论】:
-
d = {'foo': 'asad', 'bar': 'asdfsfs'}; d.get('foo'); d.get('foobar')。前者将返回asad,后者将返回None -
在这里描述函数的用途。你检查过 Python 内置列表吗?
-
为了清楚起见,
presence和present?不是内置的 Ruby 方法;他们是defined by Rails。 -
我觉得没必要,因为python的真实性标准和rails的
present?是一样的。在 ruby 中,只有 nil 和 false 是“假的”,而在 Python 中,空字符串/数组/对象也是“假的”(参见 docs.python.org/2.4/lib/truth.html)。因此,您可以只说params = {"state": "", "country": ""}; result = params.get("state") or params.get("country") or "US",结果将等于“US”。 -
为了清楚起见,这个问题提供了
present?的概述:stackoverflow.com/a/20663389/1779477
标签: python ruby-on-rails django validation language-comparisons