Metal #0 Swift復習
- Lingheng Tao
- 2024年3月22日
- 読了時間 3 分
Unity Shader Content Table Metal #22 [Appendix] SwiftUI Shader CG Paper #2 KinectFusion: Real-time 3D Reconstruction and Interaction Using a Moving Depth Camera
#ComputerGraphics#GameEngine#TechnicalArt
Metal は Objective-C と C++ で書けるが、多くの Metal ドキュメントやチュートリアルは Swift で書かれている。本ノートでは Swift の簡単な復習を行う。
変数宣言
値型の宣言
Swift では以下の構文で変数を宣言する。
Plain Text// 変数
var str = "Hello World"
var myVariable = 123
var myInt : Int = 5 // 明示的な型宣言
// 定数
let constantVariable = 123
let myExplicitDouble : Double = 5.0
// 配列
let intArray = [1,2,3,4,5]
let expIntArray : [Int] = [1,2,3,4,5]
// タプル
let fileNotFound = (404, "File Not Found")
let serverError = (code: 500, message: "Internal Server Error")
// タプルは各値のインデックスを提供するので、serverError.message で2番目の要素を取得可能
// 辞書
var crew = ["A": "Tony", "B":"Aaron", "C":"Steve"]
print(crew["A"]) // "Tony"
crew["D"] = "Eric" // ("D", "Eric") を辞書に追加
crew.removeValue(forKey:"D") // ("D", "Eric") を削除
var と let の違いは変数の可変性。let で宣言した変数は不変で、後で変更するとコンパイラがエラーを出す。
Swift 標準ライブラリでは、Array、Dictionary、Set などのコレクション型は値型として設計されている。変数や定数に代入したり、関数に渡すときは実際にはコピーを操作する。ただし Swift は Copy-on-Write (COW) 戦略で最適化しており、実際のコピーはデータを変更する必要がある時のみ発生する。
関数
宣言
Plain Text// 引数なしの手続き
func HelloWorld() {
print("Hello World")
}
// 引数なし、戻り値あり
func MyNumber() -> Int {
return 123
}
// 引数あり
func Plus(firstVal: Int, secondVal: Int) -> Int {
return firstVal + secondVal
}
