空の文字列またはnull文字列をチェックするこのコードがあります。テスト中です。
_eitherStringEmpty= (email, password) ->
emailEmpty = not email? or email is ''
passwordEmpty = not password? or password is ''
eitherEmpty = emailEmpty || passwordEmpty
test1 = eitherStringEmpty "A", "B" # expect false
test2 = eitherStringEmpty "", "b" # expect true
test3 = eitherStringEmpty "", "" # expect true
alert "test1: #{test1} test2: #{test2} test3: #{test3}"
_
私が疑問に思っているのは、_not email? or email is ''
_よりも良い方法があるかどうかです。 CoffeeScriptでC#string.IsNullOrEmpty(arg)
に相当することを1回の呼び出しで実行できますか?私はいつでも関数を定義できました(私がしたように)が、言語に何か欠けているものがあるかどうか疑問に思っています。
うん:
passwordNotEmpty = not not password
以下:
passwordNotEmpty = !!password
完全に同等というわけではありませんが、email?.length
は、email
がnullでなく、ゼロ以外の.length
プロパティを持つ場合にのみ真理になります。この値をnot
した場合、結果は文字列と配列の両方に対して希望どおりに動作するはずです。
email
がnull
であるか、.length
を持たない場合、email?.length
はnull
と評価されますが、これは偽です。 .length
がある場合、この値はその長さに評価され、空の場合は偽になります。
関数は次のように実装できます。
eitherStringEmpty = (email, password) ->
not (email?.length and password?.length)
これは、「真実」が重宝するケースです。そのための関数を定義する必要さえありません:
test1 = not (email and password)
なぜ機能するのですか?
'0' // true
'123abc' // true
'' // false
null // false
undefined // false
unless email? and email
console.log 'email is undefined, null or ""'
まず、電子メールが未定義ではなく、存在演算子を使用してnullでないことを確認してから、存在することがわかっている場合はand email
partは、電子メール文字列が空の場合にのみfalseを返します。
Coffeescript or =操作を使用できます
s = ''
s or= null
コンテンツがnullではなく配列でもない文字列であることを確認する必要がある場合は、単純なtypeof比較を使用します。
if typeof email isnt "string"
疑問符は、モノが存在する場合にそのモノの関数を呼び出す最も簡単な方法だと思います。
例えば
car = {
tires: 4,
color: 'blue'
}
あなたは色を取得したいが、車が存在する場合にのみ...
coffeescript:
car?.color
javascriptに変換します:
if (car != null) {
car.color;
}
存在演算子と呼ばれます http://coffeescript.org/documentation/docs/grammar.html#section-6
これは非常に簡単な方法を示す jsfiddle です。
基本的には、これはjavascriptです:
var email="oranste";
var password="i";
if(!(email && password)){
alert("One or both not set");
}
else{
alert("Both set");
}
Coffescriptで:
email = "oranste"
password = "i"
unless email and password
alert "One or both not set"
else
alert "Both set"
これが誰かを助けることを願っています:)
@thejhの答えは空の文字列をチェックするのに十分であったと確信していますが、「存在するか?」を頻繁にチェックする必要があると思いますそして、「空ですか?」をチェックする必要があります文字列、配列、オブジェクトを含む '
これは、CoffeeScriptがこれを行うための短縮方法です。
tmp? and !!tmp and !!Object.keys(tmp).length
この質問の順序を保持すると、この順序で確認されます1.存在しますか? 2.空の文字列ではない? 3.空のオブジェクトではない?
そのため、存在しない場合でも、すべての変数に問題はありませんでした。
この回答 変数にtruthy
値があるかどうかの確認に基づいて、1行だけが必要です。
result = !email or !password
&あなたはこれであなた自身のためにそれを試すことができます online Coffeescript console
受け入れられる回答の代わりにpasswordNotEmpty = !!password
を使用できます
passwordNotEmpty = if password then true else false
同じ結果が得られます(構文のみが異なります)。
最初の列は値、2番目の列はif value
の結果です:
0 - false
5 - true
'string' - true
'' - false
[1, 2, 3] - true
[] - true
true - true
false - false
null - false
undefined - false