하나의 명령문으로이 함수를 만들 수있는 방법이 있습니까? Ruby에서 두 문을 하나의 문으로 결합하여
def test
err = _invalid_permission
return err if err # this statement
# do something else
end
내가 시도 :
def test
return (err = _invalid_permission) if err
# do something else
end
하지만이 if
후 err
항상 nil
또는이 하나, 다른 :
는def test
return err if (err = _invalid_permission)
# do something else
end
그러나 이것은 undefined local variable or method 'err'
됩니다.
def test
err = _invalid_permission
return err if err
err = _check_another_error
return err if err
err = _and_another_one
return err if err
# and lots more
# do something else when not error
return nil
end
가 _invalid_permission
, _check_another_error
및 _and_another_one
오류 메시지가 포함 된 비어 있지 않은 문자열이나 배열이나 해시를 반환 : 내가 일을하려고 무엇을위한
설명 방법의 이러한 종류를 단축하는 것입니다.
또 다른 이야기는, 아래의 답변을보고 난 후에, 나는 그것이 결합 수 있다고 생각 :
def test
err = _invalid_permission ||
_check_another_error ||
_and_another_one
# and lots more
return err if err
# do something else when not error
return nil
end
원본이 꽤 좋다고 생각하고 조기 최적화에 대해 너무 걱정하고 있습니다. 다른 것들은 가독성 문제 일 것이고, 조건부 테스트에서 값을 할당하면 나는 소리를 지르 곤합니다. –
암시 적 암시 적보다 낫습니다. – squiguy
이 코드는 의미가 없습니다. 너 뭐하려고? – Chuck