見出し画像

【Console Application】基本文法 28【学習記】

制御構造if,switch,tryとか特殊な演算三項演算子,ビット,論理,算術関数とかそういう手合の話🤤

Q.
なんでわざわざ nil を入れ直してるの?
A.
本来やらなくて良いんだけど学習の為に敢えて…🤤

→ ?. での三項演算子やエルビス演算子を組む場合、型に注意が要るようで、割と使いどころが限定されてる模様
 →この学習みたいに null 的値を一律 null に再変換するような処理のコードを短くするには工夫がかなり要るっぽい🙄

#学習記 #Swift
#三項演算子 #エルビス演算子
#nil結合演算子

基準の JS コードはこちら

【Console Application】基本文法 27【学習記】
https://note.com/sayka/n/n19363bb3208d


【Swift 】三項演算子と null

そんじゃ気を取り直して Swift 編に進もうかな🤤
基本 OCObjective-C のライブラリ互換を謳う言語なので恐らくこちらの readline も無入力で改行だけ渡される筈だけどまずそれを確認しようね🤤

Swift 、 length 無いの?🙄

画像1

よもや三項演算子・エルビス演算子を使うコードを作る下調査で三項演算子・エルビス演算子を使う事になろうとは🤪

画像2

あれ?改行は含まないでくれてるのかな?🤔
行入力で改行が欲しい場合はゼロじゃないけど改行要らない方が圧倒的に多いから標準では取ってるんかな🙄
いや、ライブラリの readline の引数略値見たら strippingNewline というのが有って true になってた…指定できるけど結局初期値は改行排除じゃんww🤪

なんか書き換えしないでもうこれでいいじゃんって思うけど一応作例通りに直そうね…🤤

画像3

ええ…この書き方だめなの?😩

画像4

………波括弧打つのダルい…😞

画像5

……… if の方が文字数少ない模様………😞
(多分生成バイナリはこの程度ならほぼ同じと思われ)
まぁ打鍵数多いけど OC と同じだからこれでいいや😞

画像6

画像7

🤪🤛💥

そう、 Swift も OC も null じゃなく nil なのよね。
まぁ調べると出てくるだろうけど OC は C の系譜だから null って結局数値の 0 で予約語ってわけでもなんでもないのよね🙄
ただ、慣習としてポインタに何も入っていない定数として使われだして定着したので言語仕様的に決定している if とかとは完全に別物。
その経緯を踏まえてライブラリを使ったりできる Swfit も合わせて何もないオブジェクトを nil と定義しているって話なのよね🤔
どこぞの C 系を装った…なんだっけ? ++C++ だっけ?🤪 OC もあれみたく単純に「新生」しちゃってたらまた違ったのかなって思うね🤤
後発言語の JSJavaScript は null はオブジェクトとして 0 とは別物になってるから C のしがらみが強い Swift は C の制限もなんとなく知っていた方が理解が進みそう🤔
そうそう、今更だけど Swift のエルビス演算子は「nil結合演算子」と言うそうな🤤


次回は

Java 編かな🤤
纏めて片付けられそうな気もしたけど絶妙に時間足りないので区切っとこ🤪

この記事が気に入ったらサポートをしてみませんか?