書いて覚えるSwift入門

第18回APFSとSwift3

 

APFS3


Swift 3One More ThingWWDC1APFSHFS+


Apple1998HFS+JobsNeXTApplemacOS9Mac OSNextStepHFS+

HFS+NextStep UFSUnix File SystemOS XUFSHFS+HFS+退HFS+OS XUnixUFSHFS+

ZFSZFSfsckundoRAIDRAID-ZZ=ZFSSun Microsystems

ZFS


ZFSSolarisOSFreeBSDZFS1GPLLinuxOS XOS X v10.5ZFSApplev10.6ZFS

AppleSunOracleOracleAppleZFSOS XOSOpenZFS

HFS+UFSZFS退[1]APFSZFS

HFS+ZFSApple

11998MacHFSHFS+1WindowsFATNTFS1
表1 ファイルシステムの機能比較
機能HFS+ZFSAPFSコメント
Copy-on-write×新世代FSの要
スナップショット×
クローン×
RAID××
データセット×既存FSのパーティション相当
チェックサム×APFSはメタデータのみ
暗号化x
SSD最適化
タイムスタンプ粒度ナノ秒ナノ秒
最長ファイル名UTF-16で255文字255バイトHFS+以上ZFSでは互換性不足
旧FSからのアップグレードNA×ZFSでは困難

ZFS255HFS+NTFSUTF-16255255Twitter

ZFSAPFSZFSAPFS 使

[1]ISBN:978-4-7741-5664-4

APFS


APFSZFS?1copy-on-writeZFSApple18AppleAPFS

ZFSAPFS180ZFSAPFSZFSSSDAPFSSSDZFSAPFS

APFS?


1APFSApple調AppleOSDarwinHFS+OSHFS+APFSAPFSDarwin

CD-ROMDVDMacUSBiPhoneiPadAppleHFS+Apple

AppleAPFSHFS+1APFSAPISwift

swift.version++ // 


Swift 3Swift 2.2使Swift 3Swift 3Swift 2.3

++ / --


SE-0004+= 1Swift 3使
prefix func ++(i: inout Int) -> Int {
    i += 1
    return i
}

postfix func ++(i: inout Int) -> Int {
    let o = i
    i += 1
    return o
}

C-Stylefor


SE-0007SequenceTypeSequenceSwift
for var i = 0; i < 10; i++ {
  let elem = array[i]
  // …
}


for elem in array {
  // …
}

i
for (i, elem) in array.enumerate() {
  // …
}


var


SE-0003var
Swift2
func gcd(var a: Int, var _ b: Int) -> Int {
    a = abs(a); b = abs(b)
    if (b >a) { (a, b) = (b, a) }
    while (b > 0) { (a, b) = (b, a % b) }
    return a
}

var
Swift(2¦3)
func gcd(a: Int, _ b: Int) -> Int {
    var (x, y) = (abs(a), abs(b))
    if (x >y) { (x, y) = (y, x) }
    while (y > 0) { (x, y) = (y, x % y) }
    return x
}


SE-0002
Swift2
func logWithBase(b:Double)(_ x:Double)-
>Double {
    return log(x)/log(b)
}

let log2 = logWithBase(2)
print(log2(8)) // 3.0

SwiftOK
Swift(2¦3)
func log(base b:Double)->(Double)->Double {
    return { x in log(x)/log(b) }
}

let log2 = log(base:2)
print(log2(8)) // 3.0

使


Swift 2OK
Swift2
func distance(_ x:Double, _ y:Double)-
>Double {
  return sqrt(x*x + y*y)
}
let p = (3.0, 4.0)
print(distance(p)) // 5.0

1SE-0029
Swift(2¦3)
func distance(_ x:Double, _ y:Double)-
>Double {
  return sqrt(x*x + y*y)
}
let p = (3.0, 4.0)
print(distance(p.0, p.1)) // 5.0


Swift 3Swift 3GitHubswift-evolutionIBM Swift Sandbox12
1 IBM Swift Sandbox
図1 IBM Swift Sandboxでの実行例(コード編集)
2 IBM Swift SandboxSwift
図2 IBM Swift Sandboxでの実行例(複数バージョンのSwiftを指定)
Swift

Swift 3
Software Design

本誌最新号をチェック!
Software Design 2022年9月号

2022年8月18日発売
B5判/192ページ
定価1,342円
(本体1,220円+税10%)

  • 第1特集
    MySQL アプリ開発者の必修5科目
    不意なトラブルに困らないためのRDB基礎知識
  • 第2特集
    「知りたい」⁠使いたい」⁠発信したい」をかなえる
    OSSソースコードリーディングのススメ
  • 特別企画
    企業のシステムを支えるOSとエコシステムの全貌
    [特別企画]Red Hat Enterprise Linux 9最新ガイド
  • 短期連載
    今さら聞けないSSH
    [前編]リモートログインとコマンドの実行
  • 短期連載
    MySQLで学ぶ文字コード
    [最終回]文字コードのハマりどころTips集
  • 短期連載
    新生「Ansible」徹底解説
    [4]Playbookの実行環境(基礎編)

おすすめ記事

記事・ニュース一覧