신속한 데이터 유형


어떤 프로그래밍 언어로든 프로그래밍할 때는 다양한 정보를 저장하기 위해 다양한 데이터 유형을 사용해야 합니다.

변수의 데이터 유형에 따라 해당 값을 나타내는 비트가 컴퓨터 메모리에 저장되는 방식이 결정됩니다. 변수를 선언할 때 변수의 데이터 유형을 지정할 수도 있습니다.

모든 변수에는 어떤 종류의 데이터를 저장할 수 있는지 결정하는 데이터 유형이 있습니다.


내장 데이터 유형

Swift는 매우 풍부한 데이터 유형을 제공합니다. 다음은 일반적으로 사용되는 몇 가지 데이터 유형입니다:

Int

일반적으로 정수의 길이를 구체적으로 지정할 필요는 없습니다. Swift는 길이가 현재 플랫폼의 기본 단어 길이와 동일한 특수 정수 유형 Int를 제공합니다: Int,长度与当前平台的原生字长相同:

  • 在32位平台上,IntInt32长度相同。

  • 在64位平台上,IntInt64长度相同。

除非你需要特定长度的整数,一般来说使用Int就够了。这可以提高代码一致性和可复用性。即使是在32位平台上,Int可以存储的整数范围也可以达到-2,147,483,648~2,147,483,647,大多数时候这已经足够大了。

UInt

Swift 也提供了一个特殊的无符号类型UInt,长度与当前平台的原生字长相同:

  • 在32位平台上,UIntUInt32长度相同。

  • 在64位平台上,UIntUInt64长度相同。

注意:
尽量不要使用UInt,除非你真的需要存储一个和当前平台原生字长相同的无符号整数。除了这种情况,最好使用Int,即使你要存储的值已知是非负的。统一使用Int可以提高代码的可复用性,避免不同类型数字之间的转换,并且匹配数字的类型推断,请参考类型安全和类型推断。

浮点数

浮点数是有小数部分的数字,比如3.141590.1-273.15

浮点类型比整数类型表示的范围更大,可以存储比Int类型更大或者更小的数字。Swift 提供了两种有符号浮点数类型:

  • Double表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。

  • Float表示32位浮点数。精度要求不高的话可以使用此类型。

注意:
Double精确度很高,至少有15位数字,而Float

  • On 32- 비트 플랫폼에서는 IntInt32의 길이가 동일합니다. 🎜
  • 🎜64비트 플랫폼에서는 IntInt64의 길이가 같습니다. 🎜
🎜특정 길이의 정수가 필요하지 않은 한 일반적으로 Int를 사용하는 것으로 충분합니다. 이를 통해 코드 일관성과 재사용성이 향상됩니다. 32비트 플랫폼에서도 Int로 저장할 수 있는 정수 범위는 -2,147,483,648~2,147,483,647에 도달할 수 있습니다. 시간의 . 🎜🎜🎜🎜UInt🎜🎜Swift는 또한 현재 플랫폼의 기본 단어 길이와 동일한 길이를 가진 특수 부호 없는 유형 UInt를 제공합니다: 🎜
  • 🎜32비트 플랫폼에서는 UIntUInt32의 길이가 같습니다. 🎜
  • 🎜64비트 플랫폼에서는 UIntUInt64의 길이가 같습니다. 🎜
🎜참고:
기본 단어 길이와 길이가 같은 부호 없는 정수를 저장해야 하는 경우가 아니면 UInt를 사용하지 마세요. 현재 플랫폼. 이 경우를 제외하고는 저장하려는 값이 음수가 아닌 것으로 알려져 있더라도 Int를 사용하는 것이 좋습니다. Int를 통일적으로 사용하면 코드 재사용성이 향상되고, 서로 다른 숫자 유형 간의 변환이 방지되며, 숫자 유형 추론을 일치시킬 수 있습니다. 유형 안전성 및 유형 추론을 참조하세요. 🎜
🎜부동 소수점 숫자 🎜🎜부동 소수점 숫자는 3.14159, 0.1-273.15와 같이 소수 부분이 있는 숫자입니다. . 🎜🎜부동 소수점 유형은 정수 유형보다 더 넓은 범위를 나타내며 Int 유형보다 크거나 작은 숫자를 저장할 수 있습니다. Swift는 두 가지 부호 있는 부동 소수점 숫자 유형을 제공합니다. 🎜
  • 🎜Double은 64비트 부동 소수점 숫자를 나타냅니다. 매우 크거나 매우 정확한 부동 소수점 숫자를 저장해야 할 때 이 유형을 사용하십시오. 🎜
  • 🎜Float은 32비트 부동 소수점 숫자를 나타냅니다. 이 유형은 정확도 요구 사항이 높지 않은 경우 사용할 수 있습니다. 🎜
🎜참고:
Double은 최소 15자리로 매우 정확하지만 Float은 최소 6자리입니다. 숫자. 어떤 유형을 선택하는지는 코드에서 처리해야 하는 값의 범위에 따라 다릅니다. 🎜

Boolean value

Swift에는 Bool이라는 기본 Boolean 유형이 있습니다. 부울 값은 참 또는 거짓만 가능하므로 논리값을 참조합니다. Swift에는 true와 false라는 두 개의 부울 상수가 있습니다.

String

문자열은 문자의 시퀀스입니다. 예:

"Hello, World!"

Character

문자는 단일 문자를 나타냅니다. 예:

"C"

옵션 유형

옵션 유형(옵션)을 사용하여 가능한 누락된 값 상황을 처리합니다. . 선택적 유형은 값을 나타내거나 값이 없음을 나타냅니다.



값 범위

다음 표는 다양한 변수 유형의 저장 공간과 변수 유형의 최대 및 최소값을 보여줍니다.

Type크기(바이트) 간격 값
Int81바이트 -127~127
UInt81바이트 0~255
Int324바이트 -2147483648 2147483647
UInt32으로 4바이트 0~4294967295
Int648바이트 -9223372036854775808~9223372036854775807
UInt 64 8바이트0 ~ 18446744073709551615
Float4바이트 1.2E- 38~3.4E+38(~6자리)
Double8바이트 2.3E-308~1.7E+308(~15자리)

유형 별칭

유형 별칭은 현재 유형에 대한 다른 이름을 정의합니다. 유형 별칭은 typealias 키워드를 사용하여 정의됩니다. 구문 형식은 다음과 같습니다.

typealias newname = type

예를 들어 다음은 Int의 유형 별칭을 Feet으로 정의합니다.

typealias Feet = Int

이제 별칭을 통해 변수를 정의할 수 있습니다.

import Cocoa

typealias Feet = Int
var distance: Feet = 100
print(distance)

Playground를 사용하여 위 프로그램을 실행하고 출력 결과는 다음과 같습니다:

100

type Safety

Swift는 유형이 안전한 언어입니다.

Swift는 유형이 안전하기 때문에 코드를 컴파일할 때 유형 검사를 수행하고 일치하지 않는 유형을 오류로 표시합니다. 이를 통해 개발 초기에 버그를 찾아 수정할 수 있습니다.

import Cocoa

var varA = 42
varA = "This is hello"
print(varA)

위 프로그램은 Xcode에서 오류를 보고합니다.

error: cannot assign value of type 'String' to type 'Int'
varA = "This is hello"

이는 'String' 문자열을 'Int' 변수에 할당할 수 없다는 의미입니다.


유형 추론

유형 검사는 다양한 유형의 값을 처리해야 할 때 오류를 방지하는 데 도움이 됩니다. 그러나 이것이 상수나 변수를 선언할 때마다 명시적으로 유형을 지정해야 한다는 의미는 아닙니다.

유형을 명시적으로 지정하지 않으면 Swift는 유형 추론을 사용하여 적절한 유형을 선택합니다.

예를 들어, 새 상수에 값 42를 할당하고 유형을 지정하지 않으면 Swift는 할당한 초기 값이 정수처럼 보이기 때문에 상수 유형이 Int라고 추론할 수 있습니다.

let meaningOfLife = 42
// meaningOfLife 会被推测为 Int 类型

마찬가지로, 유형을 지정하지 않으면 부동 소수점 리터럴은 유형을 나타내며 Swift는 Double을 원한다고 추론합니다.

let pi = 3.14159
// pi 会被推测为 Double 类型

부동 소수점 숫자의 유형을 추론할 때 Swift는 항상 Float 대신 Double을 선택합니다.

정수와 부동 소수점 숫자가 모두 표현식에 나타나면 Double 유형으로 추론됩니다.

let anotherPi = 3 + 0.14159
// anotherPi 会被推测为 Double 类型

원래 값 3은 유형을 명시적으로 선언하지 않고 부동 소수점 리터럴이 표현식에 나타나므로 표현식은 Double 유형으로 추론됩니다.

Example

import Cocoa

// varA 会被推测为 Int 类型 
var varA = 42
print(varA)

// varB 会被推测为 Double 类型  
var varB = 3.14159
print(varB)

// varC 也会被推测为 Double 类型   
var varC = 3 + 0.14159
print(varC)

위 코드를 실행하면 출력 결과는 다음과 같습니다.

42
3.14159
3.14159