ある知財部員 兼 (元)技術者 の日記

企業の知財部員の日記です。
趣味でプログラミングをしており、備忘録として覚えたことを投稿するかもしれません。

Swift文法基礎(8) 型安全性(Type Safety)と型推論(Type Inference)

2023-08-20 08:25:19 | iOSプログラミング(Swift)

Swiftは型安全(type-safe)な言語だそうです。値の型が明示的になるように実装しなくてはいけません。

ある変数の型がStringであった場合、その変数にIntの値を代入することはできません。

型チェックはコンパイル時に行われ、誤りがある場合はコンパイルエラーとなります。


Swiftは型チェックを行いますが、必ずしも型宣言が必要なわけではなく、適宜、型推論(type inference)を行なってくれます。

定数や変数の初期値によって型推論が行われます。

let a = 5 // aはIntと型推論されます。

Swiftでは、浮動小数点数に対しては、必ずDoubleと型推論します。Floatにはなりません。

let x = 4 + 0.1234567 //xはDoubleと型推論されます。

 


Swift文法基礎(7) 浮動小数点数

2023-08-19 22:51:37 | iOSプログラミング(Swift)

浮動小数点数を表す型はDoubleとFloatがあります。

  • Doubleは64ビットの浮動小数点数です。
  • Floatは32ビットの浮動小数点数です。

Doubleは少なくとも小数点15桁、Floatは高々 小数点6桁の精度です。

状況に応じて使い分けることになりますが、どちらでも良い場合はDoubleを使用するのが良いでしょう。


var f:Float ,d:Double

f = 1.1234567890123456789

d = 1.1234567890123456789

print(" Float=\(f), Double=\(d)")


以下、Console出力です。

Float=1.1234568, Double=1.1234567890123457


Swift文法基礎(6) 整数 Int, UInt他

2023-08-19 14:03:39 | iOSプログラミング(Swift)

整数には符号付(負、0、正)と符号なし(0以上)があります。

var d, e, f: Int

d = -3

e = 0

f = 234

var g, h, i: UInt

g = 0

h = -5 // コンパイルエラー

i = 22


整数は8,16,32,64ビットで指定できます。
さらに、それぞれのビットにおける最大値、最小値を取得できます。

 

var a1:UInt8,a2:UInt8, b1:UInt16,b2:UInt16, c1:UInt32,c2:UInt32, d1:UInt64,d2:UInt64

var e1:Int8,e2:Int8, f1:Int16,f2:Int16, g1:Int32,g2:Int32, h1:Int64,h2:Int64

 

a1 = UInt8.max

a2 = UInt8.min

b1 = UInt16.max

b2 = UInt16.min

c1 = UInt32.max

c2 = UInt32.min

d1 = UInt64.max

d2 = UInt64.min

 

print(" UInt8.max = \(a1)\n UInt8.min = \(a2)\n UInt16.max = \(b1)\n UInt16.min = \(b2)\n UInt32.max = \(c1)\n UInt32.min = \(c2)\n UInt64.max = \(d1)\n UInt64.min = \(d2)")

 

e1 = Int8.max

e2 = Int8.min

f1 = Int16.max

f2 = Int16.min

g1 = Int32.max

g2 = Int32.min

h1 = Int64.max

h2 = Int64.min

 

print(" Int8.max = \(e1)\n Int8.min = \(e2)\n Int16.max = \(f1)\n Int16.min = \(f2)\n Int32.max = \(g1)\n Int32.min = \(g2)\n Int64.max = \(h1)\n Int64.min = \(h2)")



以下、Consoleの出力です。

 UInt8.max = 255

 UInt8.min = 0

 UInt16.max = 65535

 UInt16.min = 0

 UInt32.max = 4294967295

 UInt32.min = 0

 UInt64.max = 18446744073709551615

 UInt64.min = 0

 Int8.max = 127

 Int8.min = -128

 Int16.max = 32767

 Int16.min = -32768

 Int32.max = 2147483647

 Int32.min = -2147483648

 Int64.max = 9223372036854775807

 Int64.min = -9223372036854775808


なお、32ビットOS上ではIntはInt32、UIntはUInt32と同じサイズ、64ビットOS上ではIntはInt64、UintはUint64と同じサイズになります。

var int:Int,uint:UInt

int = Int64.max /*コンパイルエラーになる*/

uint= UInt64.max /*コンパイルエラーになる*/

int = Int(Int64.max) /*OK*/

uint = UInt(UInt64.max)/*OK*/

print(int,uint)

以下、Console出力です。

9223372036854775807 18446744073709551615


Swift文法基礎(4) print

2023-08-19 08:59:35 | iOSプログラミング(Swift)

print関数はglobal関数(どこでも使用可能)です。
XCodeのConsoleパネルに出力されます(Xcodeの使用方法(1) Consoleの表示方法)。

print("Hello!")


複数の変数をカンマで区切って指定できます。

var h = "How", a = "are", y = "you"
print(h,a,y)

How are you


区切り文字(初期値は空白)、行末(初期値は改行)を変更できます。

print(h,a,y,separator:",",terminator:"?")

How,are,you?


変数を下記のように文中に埋め込むことで、変数の値を表示させることができます。

var param = 1.0
print("value of param is \(param)")

value of param is 1.0