LoginSignup
8
6

More than 5 years have passed since last update.

Swiftの特徴

Last updated at Posted at 2017-04-15

Swiftの特徴

静的型付き言語

  • 型安全性
    • コンパイル時に、変数や定数の型の情報を決定
    • 型の誤りをコンパイル時に検出するので、予期せぬ型による実行時エラーが発生しない
  var a: Int

  // OK
  a = 456
  // NG
  a = "abc"

型推論

  • 代入値からコンパイラが型を推測できる
  • 型推論の活用により変数や定数の型宣言を省略可能な場合が多い
    • 記述が簡潔になる
let a = 123
let b = "abc"

print(type(of: a));
print(type(of: b));

[実行結果]

Int
String

ジェネリクス

  • 特定の型に制限されない汎用的なプログラムを記述する機能
  • 安全性と再利用性の両立
max関数
public func max<T>(_ x: T, _ y: T) -> T where T : Comparable
Intの比較
let x = 123
let y = 456

let z = max(x, y)   // 456
Stringの比較
let x = "abc"
let y = "def"

let z = max(x, y)   // def

nil許容性

  • 基本的に変数や定数にnilを代入不可能
  • nilを許容する特別な型の変数や定数にのみnilを代入可能
    • 代表的な型として、Optional<Wrapped>
  • 想定外箇所ではnilが使用されない
let a: Optional<Int>
let b: Int

// OK
a = nil
// NG
b = nil

Objective-Cとの連携

  • 過去資産の利用
  • Objective-Cからの段階的移行も可能
ObjcClass.h
#import <Foundation/Foundation.h>

@interface ObjcClass : NSObject

@property(nonatomic, strong) NSString *name;

- (void)printName;

@end
ObjcClass.m
#import "ObjcClass.h"

@implementation ObjcClass

- (void)printName {

    NSLog(@"My name is %@", _name);
}

@end
Bridging-Header.h
#import "ObjcClass.h"
Swiftコード

let objcClass = ObjcClass()
objcClass.name = "makopy_inside"
objcClass.printName()

命名規則

  • 単語の区切り方
    • upper camel case
      • プロトコル
      • モジュール
    • lower camel case
      • 変数
      • 定数
      • 関数
  • 単語の選び方
    • あいまいさの解消に必要な単語は全て含める
    • 一般的でない単語の使用を避ける
    • 略語を避ける
  • API Design Guidlines
8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6