programing

문이 작동하지 않는 경우 한 줄

javamemo 2023. 6. 9. 21:42
반응형

문이 작동하지 않는 경우 한 줄

<%if @item.rigged %>Yes<%else%>No<%end%>

이런 생각을 하고 있었어요?

if @item.rigged ? "Yes" : "No" 

하지만 효과가 없습니다.루비가 가지고 있는 것은||=어떻게 사용하는지조차 잘 모르겠어요

제거한다.if부터if @item.rigged ? "Yes" : "No"

3항 연산자에 폼이 있습니다.condition ? if_true : if_false

루비에서, 조건과.then의 일부if식은 식 구분 기호(즉, 식 구분 기호)로 구분해야 합니다.;또는 새로운 라인) 또는then키워드

이 모든 것이 가능합니다.

if @item.rigged then 'Yes' else 'No' end

if @item.rigged; 'Yes' else 'No' end

if @item.rigged
  'Yes' else 'No' end

루비에도 조건부 연산자가 있지만, 그것은 완전히 불필요합니다.조건부 연산자는 연산자이기 때문에 C에서 필요합니다.if는 문이므로 값을 반환할 수 없으므로 값을 반환하려면 값을 반환할 수 있는 것을 사용해야 합니다.그리고 C에서 값을 반환할 수 있는 것은 함수와 연산자뿐이며, 만들 수 없기 때문에ifC의 함수, 당신은 연산자가 필요합니다.

하지만 루비에서는,if는 표현입니다.사실 모든 은 루비의 표현이므로 이미 값을 반환할 수 있습니다.조건 연산자가 존재할 필요도 없고, 사용할 필요도 없습니다.

BTW: 질문을 할 때 사용되는 방법의 이름은 다음과 같이 물음표로 지정하는 것이 일반적입니다.

@item.rigged?

이것은 Ruby에서 조건 연산자를 사용할 때의 또 다른 문제를 보여줍니다.

@item.rigged? ? 'Yes' : 'No'

여러 개의 물음표가 서로 가까이 붙어 있어서 읽기가 어려울 뿐입니다.

다음의 경우 한 줄:

<statement> if <condition>

고객 사례:

"Yes" if @item.rigged

"No" if !@item.rigged # or: "No" unless @item.rigged

내가 아는 바로는

한 줄 3개

  1. a = 10 if <condition>

예:

a = 10 if true # a = 10
b = 10 if false # b = nil
  1. a = 10 unless <condition>

예:

a = 10 unless false # a = 10
b = 10 unless true # b = nil
  1. a = <condition> ? <a> : <b>

예:

a = true ? 10 : 100 # a = 10
a = false ? 10 : 100 # a = 100

도움이 되길 바랍니다.

셸 및 C 라인 구조는 모두 작동합니다(루비 1.9.3p429).

# Shell format
irb(main):022:0> true && "Yes" || "No"
=> "Yes"
irb(main):023:0> false && "Yes" || "No"
=> "No"

# C format
irb(main):024:0> true ? "Yes" : "No"
=> "Yes"
irb(main):025:0> false ? "Yes" : "No"
=> "No"

만약 조건이 삼원 연산자로 커버될 수 있다면.

@item.rigged? ? 'Yes' : 'No'

단순화를 위해 0인 경우 일부 값을 기본값으로 설정해야 하는 경우 다음을 사용할 수 있습니다.

@something.nil? = "No" || "Yes"

사용할 수 있는 항목:

(@item.rigged) ? "예" : "아니오"

@item.rigged가 참이면 'Yes'를 반환하고, 그렇지 않으면 'No'를 반환합니다.

루비 태그에서 콘텐츠를 생성할 수 있습니다.

  v
<%= @item.rigged? ? "Yes" : "No" %>

체크 표시(v)는 등호를 사용하여 HTML의 텍스트를 생성함을 나타냅니다.

if apple_stock > 1
  :eat_apple
else
  :buy_apple
end

위의 문장은 루비로 된 3차 문장의 형태로 다음과 같이 쓸 수 있습니다.

apple_stock > 1 ? :eat_apple : :buy_apple

언급URL : https://stackoverflow.com/questions/3827874/one-line-if-statement-not-working

반응형