問題タブ [truthiness]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
raku - Perl 6 はどのように真実性を評価しますか?
Perl 6 について読んでいると、もうやらなくていいという機能が大々的に宣伝されているのがわかります。
...しかし、代わりに次のことができます:
その場合、真実は Perl 6 でどのように機能しますか? Perl 5 では、非常に単純でした: 0、""、および undef は false で、それ以外はすべて true です。
ブーリアンコンテキストに関するPerl 6のルールは何ですか?
ruby - Rubyで真実を避けるにはどうすればよいですか?
Rubyで真実性を回避するための標準的な方法はありますか、それとも、次のような独自のソリューションを展開する必要がありますか?
背景:to_bool
それはRubyの寛容な性質に反することはわかっていますが、私は3値論理で遊んでおり、誤って次のようなことをしないようにしたいと考えています。
私はフラットメイト共有Webサイトのパーサーを書いているので(個人用、商用ではなく)、一部のフィールドで情報が欠落している可能性があるため、3値論理を使用しています。したがって、場所が不明である可能性があります。私の基準を満たしているかどうか。ただし、3値論理を使用するコードの量を制限しようと思います。
ruby - ルビーでは、疑問符で終わるメソッド名の真偽は慣用的ですか?
true
何かが真であること、またはそれ自体が返されるべきであることを示すために、疑問符の付いたメソッドが真の何か (数値など) を返すのは正常ですか?
たとえば、Ruby 標準ライブラリや Rails で真実性が使用されている例はありますか?
背景:誰かが別の質問への回答に、真を表す整数と偽を表す整数を返すString#int?
メソッドを書きました。別のユーザーは、ブール値を返さないことに驚きました。nil
ruby - 表現の「真実」を判断する?
重複の可能性:
Rubyオブジェクトがブール値である
かどうかを確認するRubyで真実性を回避するにはどうすればよいですか?
次のような配列があるとします(たとえば):
たとえば、これに頼らずに、どの要素が実際のブール値であるかを判断する簡単な方法はありますか?
アレイ内の位置に依存することは、ケースごとに異なるため、オプションではありません。
ruby - NilClassから継承する方法、または同様の機能をシミュレートする方法
Null Object Design Patternを使用したいのですが、NilClassから継承できることがわかりました。
メソッド「nil?」を書くことができます。falseを返しますが、ユーザーが以下のコードを記述した場合はどうなりますか
私がやろうとしていることを明確にするために:
javascript - JavaScript 巻き上げと Truthy & Falsy を理解する
JavaScript ホイストについて読んだことがあります。
JavaScript スコーピングと巻き上げ by Ben Cherry
Dmitry Soshnikov による「巻き上げ」についての 2 つの言葉
そして、JavaScript の型強制、true と false のテストについての詳細: Truth, Equality and JavaScriptおよびその他のリソース
そして、いくつか練習していると、巻き上げと変数「真偽」に関する重要な概念が欠けていることがわかりました。
1: 変数宣言が重複している 'if' 真偽テスト
o/p:inside if
疑問: 'foo' の値は '1' でif(!foo)
あると評価されfalse
、そのブロックは実行されるべきではありません (上記のリソースからの引用: 巻き上げはvar
&function
宣言のみに影響し、実行には影響しません)。しかし、なぜそのアラートが表示されるのですか。これは、私が直接使用する場合にはfalse
当てはまりません (以下の非トリック コード: スニペット #3 に示されています)。
2: 変数宣言が重複しない 'if' 真偽判定
o/p:出力なし。コントロールが入っていないことを意味します 'if' ブロック
これは期待できることです
3: 重複した変数宣言で「false」を使用する「if」
o/p:出力なし。コントロールが入っていないことを意味します 'if' ブロック
これは期待できることです
誰か明確にしてください。ありがとう
ruby - ブール引数を取る環境では、暗黙的に強制するのではなく、すべての関数をラップすることをお勧めしますか?
String#=~
関数を例にとってみましょう。一致が見つかった場合、最初の一致のインデックスを返します。これはFixnum
、ブール値環境では常に true として機能します。一致が見つからない場合は、false として機能する null を返します。
今、クラスがあるとします:
このコードはほとんど期待どおりに機能しますが、試行条件演算子の最初の要素が私の質問の対象です。
ラップしないほうがいいのmyprop =~ /awesome/
?私はそれを別のメソッドのように抽象化することについて話しているdef is_awesome?; myprop =~ /awesome/; end
のではなく、Ruby が Fixnums を true に暗黙的にキャストし、nil を false にキャストすることを強制する現在の規則が、条件を自分でキャストしたものにラップするよりも好ましいかどうか. 私はこれを簡単に行うことができます:
私が最初のスタイルで見た長所:
- ほとんどのメンテナー (将来の私を含む) は暗黙の型に慣れています
- 短いです
2番目のスタイルの長所:
=~
メソッドの結果とそのブール値の解釈の間の関係が何であるかは、より明白です。- より創造的な明示的なキャストを自由に使用できるようになります
慣用的な場合 (たとえば、 を使用した正規表現マッチング=~
) には暗黙的な型変換を残し、そうでない場合 (たとえば、独自のプロパティ、特に複数の戻り値の型がある場合) には明示的に行う中間点があるのではないかと思います。 )。
コミュニティがこの問題について共有できる洞察や経験をいただければ幸いです。
javascript - Javascriptの未定義の文字列プロパティの真実性
私はJavascriptで次のパターンをよく使用しました。
それが勝つため:
私はまた、同じパターンのわずかな変形を頻繁に使用します。
それはすべて素晴らしいです...問題を除いて、私は最近発見しました:
つまり、文字列があり、string.aPropertyThatStringDoesntHave||を実行する場合 foo、fooも実際の値も返されません。代わりに、未定義になります。
誰かがこれがなぜであるか説明できますか?foo.xが未定義の場合、foo.x || anyElseは常にanythingElseになるはずです...では、なぜそうではないのですか?
objective-c - メソッドパラメータとしての条件値(whileループなど)
だから、私はこれを効果的に行う方法を作ろうとしています:
そして、あなたの最初の提案BOOL
は次の例外を考慮するかもしれませんが:
プリミティブを使用すると_Bool
、前者の問題を解決できますが、後者の問題は解決しません。タイプにとらわれないパラメーターの真実性を、どのように機能するかと同じように評価する方法はありますwhile()
か?
ruby - 真実性のためのYARD大会
YARD スタイルのドキュメントのパラメータが「真実」のステータスにのみ使用されることを示す規則はありますfalse
かnil
?
次の場合、通常は何を置き換えTruthy
ますか?
ドキュメントで見つけることができる最も近いのは Boolean ですが、これは私が本当に望んでいるものではありません。