루비에서 변수가 nil이 아니고 0이 아닌지 확인
변수가 0이 아닌 0이 아닌지 확인하기 위해 다음 코드를 사용하고 있습니다.
if(discount != nil && discount != 0)
...
end
더 좋은 방법이 있습니까?
discount.nil이 아니라면? || 할인 == 0 # ... 종료
class Object
def nil_zero?
self.nil? || self == 0
end
end
# which lets you do
nil.nil_zero? # returns true
0.nil_zero? # returns true
1.nil_zero? # returns false
"a".nil_zero? # returns false
unless discount.nil_zero?
# do stuff...
end
일반적인 면책 조항에주의하십시오 : 강력한 힘 / 책임, 어두운면으로 이어지는 원숭이 패치 등.
[nil, 0] .include? (할인)이 아닌 한 # ... 종료
5 년이 지난 후 ....
if discount.try :nonzero?
...
end
이 노트에 중요 try
그것이 일반 루비에서 사용할 수 없습니다 있도록 ActiveSupport 보석에 정의되어 있습니다.
Ruby 2.3.0부터 안전한 탐색 연산자 ( &.
) 와을 결합 할 수 있습니다 Numeric#nonzero?
. 인스턴스가 있었고 -숫자 인 경우를 &.
반환 nil
합니다 .nil
nonzero?
0
if discount&.nonzero?
# ...
end
또는 접미사 :
do_something if discount&.nonzero?
if (discount||0) != 0
#...
end
당신은 이것을 할 수 있습니다 :
if (!discount.nil? && !discount.zero?)
경우 때문에 순서는 여기에 중요 discount
하다 nil
, 다음은 없을 것이다 zero?
방법을. 그러나 Ruby의 단락 평가는 is discount.zero?
이면 평가하려고하지 않아야합니다 .discount
nil
빈 행을 정수 값으로 변환하고 0을 확인할 수 있습니다.
"".to_i.zero? => true
nil.to_i.zero? => true
if discount and discount != 0
..
end
업데이트는 것입니다 false
위해 할discount = false
NilClass
제공된 #to_i
메소드를 활용하면 nil
값에 대해 0을 리턴 합니다.
unless discount.to_i.zero?
# Code here
end
경우 discount
분수 일 수있다, 당신이 사용할 수있는 #to_f
제로로 반올림되는 수를 방지하기 위해, 대신.
def is_nil_and_zero(data)
data.blank? || data == 0
end
""를 전달하면 빈 값으로 false를 반환합니까? true를 반환합니다. data = false 빈 경우와 동일합니까? nil, false, empty 또는 공백 문자열에 대해 true를 반환합니다. 그래서 공백을 사용하는 것이 낫습니까? 빈 문자열을 피하는 방법.
데이터베이스 레코드를 처리 할 때 마이그레이션 도우미를 사용하여 모든 빈 값을 0으로 초기화하고 싶습니다.
add_column :products, :price, :integer, default: 0
코드가 초기화되기 전에 시도하지 않고 사용하지 않는 한 할인을 0으로 초기화 할 수 있습니다. 그것은 내가 생각하는 하나의 수표를 제거 할 것이고, 나는 다른 것을 생각할 수 없습니다.
if discount.nil? || discount == 0
[do something]
end
다른 해결책은 다음과 같이 구체화를 사용하는 것입니다.
module Nothingness
refine Numeric do
alias_method :nothing?, :zero?
end
refine NilClass do
alias_method :nothing?, :nil?
end
end
using Nothingness
if discount.nothing?
# do something
end
다음은 루비 코드에 충분하다고 생각합니다. 나는 이것과 원본의 차이점을 보여주는 단위 테스트를 작성할 수 없다고 생각합니다.
if discount != 0
end
참고 URL : https://stackoverflow.com/questions/252203/checking-if-a-variable-is-not-nil-and-not-zero-in-ruby
'IT story' 카테고리의 다른 글
R의 문자열에서 마지막 n 문자 추출 (0) | 2020.04.08 |
---|---|
WebKit이 스타일 변경을 전파하기 위해 다시 그리거나 다시 그리도록하려면 어떻게해야합니까? (0) | 2020.04.08 |
ng-click을 사용하여 경로를 호출하는 방법 / 언제? (0) | 2020.04.08 |
데이터 프레임 열을 숫자 유형으로 변환하는 방법은 무엇입니까? (0) | 2020.04.08 |
Android Studio를 사용하여 서명되지 않은 APK 파일 빌드 (0) | 2020.04.07 |