분류 전체보기
[Swift] property(프로퍼티)
해당 포스팅은 아래 링크에서 값타입 & 참조타입을 먼저 학습한 후에 읽는 것을 권장합니다. https://990427.tistory.com/71 전 게시물들에서 클래스나 구조체에 쓰는 변수나 상수를 프로퍼티라고 불렀었다. 프로퍼티란 클래스, 구조체, 열거형에 관련된 값을 뜻한다. (대충 위에말도 맞음) 프로퍼티는 총 3가지 형태로 존재하는데, 하나씩 알아보도록 하자. Stored Property (저장 프로퍼티) 저장 프로퍼티는 말 그대로 값을 저장하는 프로퍼티를 의미한다. 우리가 익히 알고있는 class, struct안에 존재하는 변수나 상수는 기본적으로 저장 프로퍼티이다. class ex1 { let num = 0 var str = "hello" } struct ex2 { var num = 1 let..
[Swift] 클로저(Closure)의 모든것
본 게시물은 클로저의 기본 부터 심화까지 모두 다루고 있습니다. swift 함수의 기본을 다루었다고 가정하고 작성했습니다. Closure / 클로저 클로저란? 보통은 익명함수를 뜻한다. 하지만 named 함수도 클로저에 속한다는 사실 ! 클로저는 named Closure & unnamed Closure 두가지를 포함하고 있다. 우리가 알고 있는 일반적인 함수는 named Closure이다. func NameClosure() { print("I have a name") } 익명함수는 정확히는 unnamed Closure이지만, 보통 unnamed을 생략하고 그냥 클로저라고 부른다. 즉, 클로저 = 익명함수라고 통상적으로 생각하면 될듯 ? ( 클로저는 익명함수이지만, 1급 객체 함수의 특성을 가진다. ) 요..
[Swift] 제어문 (조건문 / 반복문)
조건문 if-else 다른 if문과 형식은 같다. var num = 0 if num == 0 { //code } else if num == 10 { //code } else{ //code } 다른점은 조건이 무조건 Bool type이여야 한다는 것이다. 즉, 숫자 0은 false이고, 나머지는 true 라는 다른 언어의 특성을 지니지 않는다. // error code var num = 0 if num { //code } switch 다른 언어의 switch와는 달리 break를 명시하지 않아도 됨 case에서 다루지 않는 범위가 있는 한 default 부분은 꼭 써주기 var num = 10 switch num { case 10: print("ten") default: print("not ten") } ..
[Swift] function / 함수
1. 함수선언 기본 func 함수이름 (변수 : type, 변수 : type) -> return_type { //code return value } //ex (더하기 함수) func add (a : Int, b : Int ) -> Int { return a+b } return ❌ func name(a: Int, b: Int) -> Void { //code } func name(a: Int, b: Int) { //code } 매개변수 ❌ func name() -> return_type { //code return } 2. 매개변수 기본값 📌 변수 : type = 기본값 func add(a : Int, b: Int = 10) -> Int { // b기본값 = 10 return (a+b) } 기본값을 설정하면..
[Swift] collection type / 컬렉션 타입
1. Array 순서가 있는 컬렉션 선언하는 방법 var intArray : Array = Array() var intArray : Array = [] var intArray : [Int] = Array() var intArray : [Int] = [] var intArray = [Int]() 활용 var intArray : Array = [] intArray.append(1) // 1을 삽입한다. intArray.contains(1) // 1이 존재하는지 확인 => true intArray.remove(at:0) // 0번째 index 값 제거 intArray.removeLast() intArray.removeAll() intArray.count // 길이 반환 intArray[0] // 0번째 ind..
[머신러닝] train_test_split (데이터 나누기)
머신러닝 공부를 하면서 scikit-learn 라이브러리를 사용하게 되었다. 오늘은 그 안에서도 데이터를 분리해주는 모듈인 train_test_split에 대해서 알아보고자 한다. import from sklearn.model_selection import train_test_split option x_train, x_test, y_train, y_test = train_test_split(x_data, y_data) 위와 같이 작성하면 랜덤으로 train data와 test data를 분리해준다. train_test_split(x,y, test_size = 0.3, train_size = 0.7) 위와 같이 데이터의 비율을 조절할 수도 있다. (test 30% / train 70%) train_test..
[머신러닝] scikit-learn (사이킷런)
scikit-learn (사이킷런) 이란 파이썬의 대표적인 머신러닝 라이브러리이다. 간단한 사용방법 XOR 학습하기 from sklearn import svm, metrics xor_data = [ [0,0], [0,1], [1,0], [1,1] ] xor_label = [0,1,1,0] clf = svm.SVC() clf.fit(xor_data, xor_label) pre = clf.predict(xor_data) ac_score = metrics.accuracy_score(xor_label, pre) print(int((ac_score)*100),"%") 머신러닝 알고리즘인 svm 알고리즘을 모듈을 이용해서 구현합니다. 데이터와 레이블을 넣을 때 fit을 사용합니다. predict는 주어진 data로..
[SwiftUI] 데이터 바인딩 (1/5) @State
데이터바인딩 데이터 바인딩(data binding)은 제공자와 소비자로부터 데이터 원본을 결합시켜 이것들을 동기화하는 기법이다. 라고 위키백과가 말하는데, 쉽게말해 SwiftUI에서 데이터 바인딩은 view에 보여줄 데이터를 연결하는 작업이라고 생각하면 될 것 같습니다. 바인딩하는 데이터의 종류는 다양하고 그 용도가 다 다르기 때문에 바인딩 하는 방법도 다양합니다. IOS 프로그래밍을 할 때 swift에서 익히 사용하던대로 프로퍼티를 선언하고 수정하면 에러가 나는것을 볼 수 있다. 그 이유와 대체 키워드인 @State에 대해서 알아보자 왜 에러가 나는가? 아래 코드는 기본적인 ContentView 형태로 버튼을 누르면 str의 값을 변경하는 코드입니다. 하지만 아래 코드는 에러가 발생합니다. struct..
[Swift] Optional과 unwrapping
프로그래밍 언어들 마다 특색이 하나씩 있는 것 같다. Swift의 언어 특색은 옵셔널이 아닐까,, 생소하지만 중요한 개념 optional에 대해서 알아보장! 1. nil optional에 앞서 nil을 알아야 합니다. nil은 쉽게 생각해서 우리가 다른 언어에서 익히 쓰는 null로 이해 하시면 될 것 같습니다. 즉 변수가 nill이라는 것은 값이 없음을 의미합니다. 하지만 swift는 일반적인 변수에 nill값을 넣을 수 없습니다. 이때 우리는 Optional이라는 것을 사용해야 합니다. 2. Optional 이 변수에는 값이 있을 수도 있고, 없을 수도 있습니다! 도대체 무슨 말일까 싶겠지만, 말 그대로 입니다. 변수가 nill일 수도 있고, 아닐 수도 있다는 것 입니다. 변수에 값이 없을 때 호출을..