swift에선 x++/ x-- 와 같은 연산자가 없어요
연산자는 주로 엄격한 동등성 비교를 나타내며, 다음과 같은 프로그래밍 언어에서 지원됩니다
- JavaScript: 타입과 값 모두를 비교합니다.
- PHP: 타입과 값 모두를 비교합니다.
- TypeScript: JavaScript의 상위 집합으로, 엄격한 비교를 지원합니다.
- Ruby: ===는 주로 case 문에서 사용되며, 특정 객체의 동등성을 비교합니다.
이 외에도 특정 라이브러리나 프레임워크에서 === 와 유사한 기능을 구현할 수 있으나, 일반적으로 위 언어들이 대표적입니다. 다른 언어들은 == 와 같은 동등성 비교 연산자를 사용합니다.
자바스크립트는 객체지향 언어인가?
자바스크립트는 객체지향 프로그래밍 언어입니다. 하지만 다른 전통적인 객체지향 언어들과는 몇 가지 중요한 차이점이 있습니다.
자바스크립트의 객체지향 특성
프로토타입 기반 언어자바스크립트는 프로토타입 기반의 객체지향 언어입니다. 이는 C++, Java와 같은 클래스 기반 언어와는 다른 접근 방식을 취합니다.클래스 vs 프로토타입
- 클래스 기반 언어: 객체의 형식이 정의된 클래스 개념을 사용합니다.
- 프로토타입 기반 언어: 클래스 개념 대신 객체 프로토타입을 사용하여 상속을 구현합니다.
자바스크립트의 객체 생성 방식
자바스크립트에서는 다음과 같은 방법으로 객체를 생성할 수 있습니다:
- 객체 리터럴
- Object() 생성자 함수
- 생성자 함수
자바스크립트의 특징
동적 특성자바스크립트는 이미 생성된 인스턴스의 자료구조와 기능을 동적으로 변경할 수 있는 특징을 가지고 있습니다.다중 패러다임자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티-패러다임 언어입니다.
ECMAScript 6의 변화
ECMAScript 6에서는 클래스 문법이 도입되었습니다. 하지만 이는 새로운 객체지향 모델을 제공하는 것이 아니라, 기존의 프로토타입 기반 상속을 더 쉽게 사용할 수 있도록 하는 문법적 설탕(syntactic sugar)입니다.결론적으로, 자바스크립트는 객체지향 프로그래밍을 지원하는 언어이지만, 그 구현 방식이 전통적인 클래스 기반 언어들과는 다르다는 점을 이해하는 것이 중요합니다.
각 프로그래밍 언어에서 클래스로부터 객체를 만드는 방법을 예시
JAVA
class Dog {
String name;
Dog(String name) {
this.name = name;
}
}
public class Main {
public static void main(String[] args) {
Dog myDog = new Dog("Buddy");
System.out.println(myDog.name);
}
}
Swift
class Car:
def __init__(self, brand):
self.brand = brand
def drive(self):
print(f'{self.brand}가 달립니다.')
my_car = Car('현대')
my_car.drive() # 출력: 현대가 달립니다.
C#
using System;
class Dog {
public string Name { get; set; }
public Dog(string name) {
Name = name;
}
}
class Program {
static void Main() {
Dog myDog = new Dog("Buddy");
Console.WriteLine(myDog.Name);
}
}
#include <iostream>
#include <string>
using namespace std;
class Dog {
public:
string name;
Dog(string n) : name(n) {}
};
int main() {
Dog myDog("Buddy");
cout << myDog.name << endl;
return 0;
}
class Dog {
public $name;
public function __construct($name) {
$this->name = $name;
}
}
$myDog = new Dog("Buddy");
echo $myDog->name;
class Dog:
def __init__(self, name):
self.name = name
# 객체 생성
my_dog = Dog("Buddy")
print(my_dog.name)
swift에선 자동으로 들어가 있기때문에 break 를 사용할 필요가 없어요
case 문에는 적어도 한개의 문장은 들어가 있어야함
case문에 범위를 지정할 수 있기 때문에 편합니다
부가적인 조건을 만들때 where절을 쓸 수 있어요
잘 사용하지 않지만 다른 언어와 다른 문법입니다.
swift에서 많이 사용하는 제어문 순서
옵셔널(optional)
var x : Int = 10
print(x)
var y : Int? = 20
print(y)
옵셔널 값을 저장하면 옵셔널식으로 저장이 된다
var y : Int?
print(y)
nil은 값이 없다는 뜻입니다
옵셔널값에 연산을 하려면 ! 를 이용해 풀어준 다음 연산되도록 해야한다
var x : Int?
x = 10
if let x{
print(x)
}
let으로 들어가면 자동으로 언래핑 됩니다.
출처: Youtube Smile Han