반응형
Swift의 정적 함수 변수
스위프트의 함수에 대해서만 로컬 범위의 정적 변수를 선언하는 방법을 찾고 있습니다.
C에서는 다음과 같이 보일 수 있습니다.
int foo() {
static int timesCalled = 0;
++timesCalled;
return timesCalled;
}
Objective-C에서는 기본적으로 다음과 같습니다.
- (NSInteger)foo {
static NSInteger timesCalled = 0;
++timesCalled;
return timesCalled;
}
하지만 스위프트에서는 이런 일을 할 수 없을 것 같습니다.저는 다음과 같은 방법으로 변수를 선언하려고 했습니다.
static var timesCalledA = 0
var static timesCalledB = 0
var timesCalledC: static Int = 0
var timesCalledD: Int static = 0
그러나 이는 모두 오류를 초래합니다.
- 첫 번째 불만 사항은 "Static properties는 유형에만 선언될 수 있습니다."입니다.
- 두 번째 불만 사항은 "예상 선언"(여기서)입니다.
static
is) 및 "예상 패턴"(여기서)timesCalledB
is) - 세 번째 불만 사항은 "한 줄 위의 연속된 문장은 ';'로 구분해야 합니다."(대장과 대장 사이의 공간에서)
static
) 및 "예상 유형"(여기서)static
is) - 네 번째 불만 사항은 "한 라인의 연속된 문장은 ';'로 구분해야 합니다."(사이의 공간)
Int
그리고.static
) 및 "예상 선언"(등호 아래)
swift는 static variable을 클래스/구조물에 부착하지 않고는 지원하지 않는다고 생각합니다.정적 변수가 있는 개인 구조를 선언해 봅니다.
func foo() -> Int {
struct Holder {
static var timesCalled = 0
}
Holder.timesCalled += 1
return Holder.timesCalled
}
7> foo()
$R0: Int = 1
8> foo()
$R1: Int = 2
9> foo()
$R2: Int = 3
다른해법
func makeIncrementerClosure() -> () -> Int {
var timesCalled = 0
func incrementer() -> Int {
timesCalled += 1
return timesCalled
}
return incrementer
}
let foo = makeIncrementerClosure()
foo() // returns 1
foo() // returns 2
Xcode 6.3을 탑재한 Swift 1.2는 예상대로 정적을 지원합니다.Xcode 6.3 베타 릴리즈 노트에서:
이제 클래스에서 "static" 메서드 및 속성이 허용됩니다("class final"의 별칭으로 사용).이제 클래스에서 정적 저장 속성을 선언할 수 있습니다. 클래스에는 전역 저장이 있고 첫 번째 액세스 시 느리게 초기화됩니다(글로벌 변수와 같이).이제 프로토콜은 형식 요건을 "클래스" 요건으로 선언하는 대신 "스태틱" 요건으로 선언합니다(17198298).
함수에 정적 선언이 포함될 수 없는 것으로 보입니다(문제의 질문에 있음).대신, 신고는 학급 단위로 해야 합니다.
클래스 함수가 필요하지는 않지만 클래스(일명 정적) 함수 내부에서 증가하는 정적 속성을 보여주는 간단한 예:
class StaticThing
{
static var timesCalled = 0
class func doSomething()
{
timesCalled++
println(timesCalled)
}
}
StaticThing.doSomething()
StaticThing.doSomething()
StaticThing.doSomething()
출력:
1
2
3
다른해법
class Myclass {
static var timesCalled = 0
func foo() -> Int {
Myclass.timesCalled += 1
return Myclass.timesCalled
}
}
언급URL : https://stackoverflow.com/questions/25354882/static-function-variables-in-swift
반응형
'source' 카테고리의 다른 글
ASP에서 httpOnlyCookies를 정확히 어떻게 구성합니까?NET? (0) | 2023.09.09 |
---|---|
변환 후 '1970-01-01' 표시 PHP 날짜 (0) | 2023.09.09 |
UIScrollView가 상단 또는 하단에 도달했는지 확인합니다. (0) | 2023.09.04 |
Node.js에서 파일의 크기를 찾는 방법은 무엇입니까? (0) | 2023.09.04 |
파이썬을 사용하여 네이티브 아이폰 앱을 작성할 수 있습니까? (0) | 2023.09.04 |