見出し画像

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

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

Q.
swift おかしかったって?
A.
なんか偶然動いてただけでライブラリの作り方が正しくなかったみたい🙄

→ OC の三項演算子試験はそこそこすぐ終わるも Swfit で事件発生
→ライブラリの作り方が正しくなく、作り方の調査からやりなおし

#学習記 #Objective_C #Swift
#三項演算子 #エルビス演算子
#framework

JSJavaScript 】三項演算子と null

そんじゃ三項条件演算子とかエルビスnull合体演算子について掌握を進めようかな🤤
コード的にはこんな手合の判定

//	JavaScript
var	ud	= null;

//	三項演算子
let	co	= (ud!=null) ? `ud : ${ud}` : "ぬるぽ";
console.log(`${co}\n`);

//	エルビス演算子
let	nc	= ud ?? "ガッ!";
console.log(`nc : ${nc}\n`);

画像1

三項演算子は上記コードの様な「条件に合う場合と合わない場合で値の取り出しが違う」場合の短絡表記に優位でエルビス演算子はどちらかを選択するだけ、という場合に効果を発揮するのでどちらがより優れてるとも言えないかな🤔
三項演算子が有っても、空なら基礎値を入れる、という場合が多かったので胆略系のエルビス演算子が生まれたのかなと思う🤤

各言語では入力を既に作ってある helloWorld を改造して進めようかな🤤


OCObjective-C 】三項演算子と null

三項演算子の火付け役となったと思われる C 言語の系譜である OC は三項演算子は勿論使えるけれどエルビス演算子は果たして…?🤔

Objective-Cでnil結合演算子的なことをするには
https://yanamura.hatenablog.com/entry/2015/03/29/214612

_人人人人人人人_
> OCにそんな <
> ものは無い <
 ̄Y^Y^Y^Y^Y^Y^ ̄

ただし、記事に有る通り、略記はできるみたい🤤

画像2

画像3

readline() に入ってくるのは null じゃなく改行コードが1文字分入力された文字として入ってるからちょっと細工が居るかな🙄

画像4

画像5

無加工 readline() は入力に必ず改行コードが含まれるので length>1 ならば何か文字が入っているという推測で 1 以下なら無入力と見做し null 扱いにするという処理🤤
何か問題がある時だけ null が返ってくる筈だけどファイルが相手ならそうなるかな🤔
コンソールが相手なので何か余程の方法が無いと readline() から null を受け取るのは不可能なのでこんな処理🤤
本来はその改行を排除したりとかやらないとならないだろうけど今回のは単に三項演算子と null チェックエルビス演算子が目的なのでこれでヨシ!👈🤪
他の言語も大体同じ処理改行ありき判定で行けるかな?🤔Swiftは行けそうだがJava系はワカラン


【 Swift 】三項演算子と null

画像6

Swift は始める前に既に「おい、ライブラリのバージョン違うぞ」って吐いて来てる…😞

ABI Stability なのになぜ Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 というエラーが起こるのでしょうか?
https://ja.stackoverflow.com/questions/60498/abi-stability-%E3%81%AA%E3%81%AE%E3%81%AB%E3%81%AA%E3%81%9C-module-compiled-with-swift-5-1-cannot-be-imported-by-the-swi
そのライブラリのビルド設定において、Module Stabilityが有効になっていないからです。
(中略)
BUILD_LIBRARY_FOR_DISTRIBUTIONというフラグをYESにする必要があります。

………🤔

ねぇ、ライブラリの作成するならそもそもデフォルトで有効化すべき案件なんじゃないのこれ?🙄
アップル的にはライブラリもバージョン追従して新しくしなさいを標準にしたいのかなとは思うけど…😞

画像7

これを YES にしないとならない…と…🙄

画像8

🙄🙄🙄❓❓❓❓❓

xcode/Command CompileSwiftSources failed with a nonzero exit code
https://note.com/runomimi/n/n1a0ac82e74e9
[SwiftUI] Command CompileSwift failed with a nonzero exit codeのエラー対策
https://tomato-develop.com/command-compileswift-failed-with-a-nonzero-exit-code-error-solutions/

またポッドファイルがうんたらかんたら出てくるけど関係ないのよねこれ😞
BUILD_LIBRARY_FOR_DISTRIBUTION で引いてみるぽ🙄

Xcode11 ABI安定化につまずいた
https://qiita.com/am10/items/abf61b67db833f344b7a

なんか同じ記事を見てフラグ設定してる🤤

画像9

ほらぁ、だからポッドなんたらは関係無いんだってばー😞

xcodebuild(Xcode12から)-Apple Silicon(arm64)のビルドを防止します
https://isolution.pro/q/so76922608/xcodebuild-xcode-12-kara-apple-silicon-arm-64-no-birudo-o-boshishimasu

………🤔

要するに、ターゲットを Any Mac (というか arm64 )にすると「XOCDE 12」では失敗する、という事かな🤔
現在の version では Any Mac を諦めるか Module StabilityBUILD_LIBRARY_FOR_DISTRIBUTION を諦めるかという話っぽい😞
解決できてないから NO にしてるんだなこれきっと🙄
( NO に戻したらあっさり通った)

画像10

🙄🙄🙄

今度は「見つからない」になる😞

調べていると前にも見た記憶が有る記事ばかりが出てくる🙄
もしかして、以前も No such module でハマった?

【Console Application】外部関数 25【学習記】
https://note.com/sayka/n/n5febf258af09?magazine_key=m7bb64c6a359f

前回は import を書いて無かっただけ…というかそもそもソース変更してないんだから変わる筈が無いのよね🙄
なんで?

有効な資料が見つからないけどふと思った。とても嫌な予感がする…🙄

画像11

ライブラリ出し直す前に framework のファイルを捨てたのね?
それを戻してみようかなって話😞

画像12

😩😩😩はぁ………

それじゃ .a を入れると framework を Library にインストールしてなくても動作するのは何だったの?🙄


次回は

ライブラリ作成実験に逆戻り🤤
なんかこれ…無限回廊なんじゃ…😞

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