Swift資料の英単語 - Language Guide

実際に資料を読みながらわからなかった単語を記載していく。
英語は得意というわけではないので若干の誤りがあるかもしれない。
本文に合わせて多少変更した意味になっているところもある。
Language Guideの範囲です。
また、各項目について簡単なまとめも書きます(ほぼ自分用)。

The Basics

難易度★★★☆☆
まあ基本

Nonetheless それにもかかわらず
its own versions / Swiftの中であらためて定義されている?
fundamental 基本的な、根本的な
textual 言葉通りの
extensive 広範囲の
to store and refer to / to storeと to refer to
in intent 意図的に?
compound 複合物
absence 不在
an example 一つの例
prevents A from B / AがBするのを防ぐ
restriction 制限

Constants and Variables

associate A with B / AとBを結びつけて考える
once いったん…すると
whereas その一方で
attempt 試み
Type Annotations 型の指定
in practice 実のところ
A rather than B / BではなくてA (「むしろ」のような中途半端な表現がいらないような)
Unicode characters 文字のキャラクターと動物のキャラクターをかけたダジャレ?
否定文 Nor 倒置した肯定文 / 両方否定
Unlike 〜と違って
appropriate 適切な
interpolation 書き込まれた語句
prompt A to do / 〜するようにそくす

Semicolons

although 〜 / 〜けど

Integers

fractional 微量の、少数の
convention しきたり
capitalized 大文字で始める
Bound 境界
appropriate-sized ふさわしいサイズの
therefore したがって
alongside といっしょに (同じタイプ同士ならキャストの必要がないという意味?)
consistency 一貫性 (なんのことやらわからない)
interoperability 相互運用性 (なんのことやらわからない)

Floating-Point Numbers

component 成分
particularly 特に、おおいに

Type Safety and Type Inference

encourages 助長する
flags 印を付ける
specify 細かく指定する
work A out / Aを計算する (Aが長いから後ろにいった?)
deduce 推論する
examining 調べること
from the context 状況から
no explicit type in and of itself (ちょっとニュアンスがわからない)
presence 存在

Numeric Literals

decimal 10進数の
binary 2進数の
octal 8進数の
hexadecimal 16進数の
prefix 前に付ける語
decimal point 小数点
exponent 指数
extra formatting 頭に0を付けて見やすくする書き方 (C言語では頭に0をつけると8進数リテラルになってしまうので出来なかった。それとの比較でSwiftではこれが出来るようになったというのを強調している)
pad 間につめるもの
Neither type どちらも〜ない
underlying (意訳)もともとの

Numeric Type Conversion

interoperable 相互運用可能な (この言葉何回か出てくるが未だによくわからない)
whereas その一方で
opt 選択する
document 記録する?
helps to (catch / documents) 検知することや記録することを出来るようにする
opt 決める? (型の変換時に型を明記することを言っていると思われる)
truncated 一部を切り詰められた

Type Aliases

contextually 文脈上、状況により

Booleans

ever / onlyを強調
turnip カブ
concise 簡潔な
substitute A for B / Bの変わりにA

Tuples

group 一緒にする
permutation 順序
decompose 分解する
particularly 特に
persist 持続する

Optionals

basic C types / intやdoubleのことと思う
to test against わからない
trigger 引き起こす
binding 拘束、なぜこの機能にoptional bindingという名前が付けられるのかわからない
extract 引き出す
manipulate 変更する(var宣言したほうがいいといっている話なので)
thereafter その後は
behind the scenes 舞台裏で
normal optional 定義の段階で型に?をつけた値
Implicitly unwrapped optional 定義の段階で型に!をつけた値
confirm 確証する

Error Handling

propagate 伝える
prepend 前につける

Assertions

cope うまく処理する
Assertion 主張、明言
query 問いただす
as to について
subsequent その後の


Basic Operators


Terminology

Terminology 専門用語

Assignment Operator

decompose 分解する

Arithmetic Operators

Arithmetic 算数
concatenation 連結、つながり
Remainder 余り、剰余
symmetry 釣り合い、調和美

Compound Assignment Operators

compound 混合物

Ternary Conditional Operator

concise 無駄がない

Nil Coalescing Operator

Coalescing 結合する

メモ

余り演算では余りの符号は割られる数の符号と一致する、割る数の符号には影響されない
++系の演算子をfloatにも適用可能


Strings and Characters

in turn 今度は
compliant 要求を受け入れる、言いなりになる
mutability 変更性
simplicity 簡潔さ
interpolation 書き込み

Strings Are Value Types

confident 自信を持っている

Unicode

arbitrary 任意の

Counting Characters

retrieve 回収する(取り出す)

メモ

SwiftのStringはNSStringと互換性がある
Swiftは参照型ではなく値型。


Collection Types

confident 自信を持っている

Mutability of Collections

Conversely 反対に言えば

Arrays

specific (型が)固有である
nature 種類
identical 同じ
Any gaps 削除した後の空白
query 問いただす

メモ

追加する時に+=を使う時は追加するのが1つでも[]に入れる
Arrayからインデックス付きで値を取得するのにforブロックでenumerate()が使える
for (index, value) in enumerate(shoppingList)で取り出したindexとvalueはconstant
var shoppingList: [String]
var shoppingList: Array<string>
var shoppingList = [String]()
と3種類ある。3番目が初期化も含むらしい。


Control Flow

considerably かなり
counterpart 相当物

For Loops

inherently 生まれつき
Neither stylistic tweak どちらの見かけ上の微調整も
strictly necessary 厳格には必要でない
neater code きちんとしたコード

Conditional Statements

outcomes 成果
preceding 前の
exhaustive 余すところがない
brevity 簡潔さ

メモ

switchは自動fallthroughはしない


Functions

unified 統合された

Defining and Calling Functions

rolled up 丸められた
tailored 注文仕立ての

Function Parameters and Return Values

respectively それぞれに

メモ

外部と内部を同じ名前にする時は#
デフォルト値があるパラメータは最後が望ましい
デフォルト値があるパラメータは呼び出し時に名前を付けて呼び出すことが必須(ただし_で回避可能)


Closures

clutter 散らかり

Closure Expressions

succinct 簡潔な
identical そっくりそのまま

Capturing Values

annotate 注釈を付ける。昔あったretainなどの機能のことを言っているのではないかと思う。


Classes and Structures

memberwise initializerは構造体だけ
underlying 根底にある。2つのインスタンスが共通のインスタンスを参照している状態を表している。

メモ

structureとenumは自分のメソッド内で自分の値を変更出来ない。変更する時はmutatingを付ける。


Properties


メモ

typeに付いているものをtype propertiesと呼ぶ
定数でも初期化中は変更可


Methods

preposition 前置詞
precedence 優先されること
disambiguate 違いを明らかにする
unqualified 無条件の(メソッド名やプロパティ名が単独で用いられた場合のこと)


メモ

methodとは特定の型に関連付けられたfunctionである。
インスタンスに付くのがインスタンスメソッド。
methodでは第一パラメータ名は内部名のみに使用。第二パラメータ以降は内部名と外部名に使用(つまり呼び出し時に外部名は必須)。これが基本。これに加え、第一パラメータを外部名とするには#を付ける。また、第二パラメータを内部名のみにする(呼び出し時に必要ない)には_を付ける。
型に付くのがタイプメソッド。クラスはclass、構造体とenumはstaticを付ける。タイプメソッド内ではselfでその型自身を表す。


Subscripts



Inheritance

regardless of に関係なく
arbitrary 任意の
base A on B Aの基礎をBに置く
diagnose 診断する
present A as B BとしてAを描写する

メモ

オブザーバーだけを追加することも出来る。
上にスーパークラスを持たないものをbase classという。
読み取り専用プロパティを、読み書きプロパティに広げることが出来る?
サブクラスでいじってほしくないときはfinalを付ける。
extentionで拡張した部分はfinalとして解釈される?
クラスそのものにfinalを付けるとクラス全体がfinalになる


Initialization

難易度★★★★★
ここは量が多いので山場です。内容的にもけっこうきつい。Language Guideの中で一番難解だった。

indeterminate 不確定の
survey 調査する
revise 見直す
beet 葉や根をサラダや煮物にして食べる野菜
circumvent 抜け道を見つけ出す
designate 指定する
funnel 煙突
hand off (ラグビーで)ボールを渡す
hypothetical 仮説上の
populate 住む
giraffe きりん
Propagation 伝達

メモ

Objective-Cと違って値を返さない。
初期値を入れるときにはオブザーバーは働かない。
初期値がいつも同じなら宣言時に指定するのを推奨。
initの引数の外部名と内部名の規則、init(aaa:Int bbb:String ccc:SomeClass)という書き方をした場合、全てのパタメータについて内部名を外部名としても使用する。内外名を別にしたい場合は外部名を追加する。外部名を省きたい時は_を使う。
オプショナルで宣言したものは初期化時に(何にも初期化されなければ)nilが設定される。
定数は初期化終了時に確定していなくてはいけない。初期化メソッド中なら定数の値を変更することが可能。設定は一度だけ可能になりました。
クラス定数の場合、宣言したクラスでのみ設定が可能。サブクラスでの設定は不可。
構造体かベースクラス(親がないクラス)で、初期化メソッドがない場合で、全てのプロパティにデフォルト値がある場合(nilも含む)、デフォルトイニシャライザーが生成される。クラス名()で実行される。
構造体に初期化メソッドが無い場合、メンバ名付き初期化メソッド(?)が作られる。(デフォルトイニシャライザーとの違ってストアドプロパティにデフォルト値がなくても作られる。)
Value Types(構造体、enum)ではイニシャライザーはイニシャライザーからしか呼べない。
イニシャライザーを何か書いたらデフォルトイニシャライザーを呼ぶことは出来ない(構造体の場合はメンバ名イニシャライザーも呼べない)。
自作イニシャライザーを何か定義しつつ、引数なしイニシャライザーも失いたくない場合は中身なしのinit(){}をわざわざ書く。
クラス型の初期化メソッドにはdesignated initializerとconvenience initializerがある。
designated initializerはだいたいの場合1つ。1つは必ず持たないといけないが、継承により受け継いだ場合でもよい。
convenience initializerは2次的に初期化機能をサポートするもの。作る必要があるときに作る。convenienceキーワードを付けて宣言する。
designated initializerはスーパークラス(あれば)のdesignated initializerを呼ぶ。
convenience initializerは同じクラス内の初期化メソッドを呼ぶ。convenience initializerが続いてもいいが、最終的にdesignated initializerにつながること。
クラス型の初期化工程は2層工程である。まずデフォルト値を入れて、次にカスタマイズ値を入れる。
designated initializerは自分のところで宣言した値を初期化してから上を呼ぶ。
designated initializerは上で宣言された値を初期化したいときは上を呼んでからにする。
convenience initializerは自分の処理をしたいときは他を呼んでからにする。
第一工程が終了し、(とりあえずの)値が確定するまではインスタンスメソッドを実行してはいけないし、値にアクセスしてはいけないし、値としてselfにアクセスしてはいけない。
super classのdesignated initializerと同じものを書くにはoverrideを使う。designated initializerをoverrideしたものがconvenience initializerでもかまわない。
super classのconvenience initializerと同じものを書く時はoverrideは書かない。super classのconvenience initializerはもともとアクセスすることが出来ないものなので、overrideを書く必要がない。
デフォルトイニシャライザーのinit(){}をサブクラスでも定義するときはoverrideを書く。
サブクラスが、すべてのプロパティがデフォルト値(宣言と同時に設定する値)を持ち、designated initializerを持たないとき、親クラスのdesignated initializerを継承する。また、サブクラスが親クラスと同じdesignated initializerを持つ場合、親クラスのconvenience initializerも継承する。ここにサブクラスの新たなconvenience initializerを追加することも可能。
親クラスのdesignated initializerをサブクラスでconvenience initializerとして定義することも可能。
失敗の可能性のあるイニシャライザはinit?()と書く。出来上がったものはオプショナル型となる。別の通常のイニシャライザと引数の組み合わせがかぶってはだめ。
失敗が確定したところでreturn nilを書く。return nilが実行されればそれ以上のinitializerは実行しない。
クラス型に、失敗の可能性のあるイニシャライザを定義するとき、return nilの時点で全ての(そのクラスで宣言した)ストアドプロパティに値が入っていないとだめ。失敗しそうな場合、そのプロパティをオプショナル型で宣言すればnilが認められるのでそうする。
生値をもつenum型の場合、自動的にinit?(rowValue:)という初期化メソッドが与えられる。
失敗の可能性のあるイニシャライザから通常のイニシャライザを呼ぶこともできる。
失敗の可能性のあるイニシャライザが他のイニシャライザを呼ぶ時はすべてのプロパティに値を入れるためにreturn nil箇所より前に呼ばないとだめ。
失敗の可能性のあるイニシャライザのオーバライドして失敗の可能性がないイニシャライザを定義するのはOK。ただしそのスーパークラスの失敗の可能性のあるイニシャライザはサブクラスから呼べない。
逆に通常のイニシャライザーをサブクラスで失敗の可能性ありにするのはだめ。
init!というのもある。詳しく調べる必要がある。implicitly unwrapped optional instanceを作るためのもの。init!とinit?間はoverride出来るし、delegateも出来る。
initからinit!を呼ぶことも出来るが、失敗した時点でアサーション(実行時エラー?)になる
requiredをつけるとサブクラスで実装しないとだめ。requiredイニシャライザにはoverrideはいらない。挙動が謎。詳しく調べる必要がある。親にrequiredがあっても初期化する必要のあるものが何もなければ実装は義務ではない(プログラムを書いてみたときの挙動より)。
初期値を設定するのにクロージャが使える。クロージャの最後に()をつけないとだめ。()を付けることで実行される。クロージャー内で他のプロパティやselfやクラス内メソッドへのアクセスはだめ。グローバル関数でも同様に使える。

inheritのされかたが独特なので、説明の中でinheritという言葉を使われるとどういう意味で使っているかが理解できないので困った。


Deinitialization

難易度★★☆☆☆

メモ

ディイニシャライザーはクラス型のみ
インスタンスを破棄する前にファイルを閉じたりする必要がある場合はディイニシャライザーを使う
自分で呼んではいけない
サブクラスのディイニシャライザーからスーパークラスのディイニシャライザーの呼び出しは自動
難しい所はとくになし、一つ前のInitializationがややこしすぎる。


Automatic Reference Counting

難易度★★★★☆

chunk 大きな塊
take up space 場所をとる
underway 進行中で
snippet 断片

メモ

weak referenceとunowned referenceを使い分ける
nilを取ることがあるものはweak referenceがよい
unowned reference先のものが削除された後にアクセスすると実行時エラー


Optional Chaining

難易度★★★★☆


Error Handling

難易度★☆☆☆☆

propagating propagate 伝える
allowing for 事態などを見越しておく


Type Casting

難易度★★☆☆☆

deduce 推測する

メモ

isはtrueかfalseを返す


Nested Types

難易度★★☆☆☆

メモ

ブラックジャックのルールがわからないのでプログラムの意味がわからない。


Extensions

難易度★☆☆☆☆

succinct 簡潔な


Protocols

難易度★★☆☆☆
長いけど内容はObjective-Cと共通部分が多い

blueprint 計画
conform 従う、一致する
pertain 直接関係がある、付随する、ふさわしい、似合う
mandatory 義務的な
pseudorandom number 擬似乱数
Congruential 生まれつきの
fully-fledged ?

メモ

プロパティは型と名前のみ指定。getterのみかsetterとgetterの両方かも指定する。storedかcomputedかはどちらでもいい。
setterとgetterタイプの場合は、定数やread Onlyの実装は無理。
プロパティにはvarを付ける。(おそらくletタイプ運用でも)
クラス型プロパティはclassを付ける。(structure or enumeration運用でも)
メソッドにはデフォルト値の指定はだめ


Generics

難易度★★★☆☆
Genericsの概念自体が初めての人には難しい
Associated Typeの概念はさらに難しい

Generic 属の
subject to 〜を満たす
abstract 抽象化する
descriptive 記述的な
hypothetical 仮説上の
llama ラマ(ラクダ科の動物)
parakeet インコ
terrapin テラピン(食用のカメ)
Associated 関連して、結びついて


Access Control

難易度★★☆☆☆
restrict 限定する
Principle 信条
deduce 推論する

メモ

クラス、構造体、enum、メソッド、プロパティなどに独立してアクセス権の制御が出来る。これらをまとめてエンティティと呼ぶ。
モジュール(使うときにimportする)とソースファイルのコンセプトに基づく。
public どこからでもアクセス可能、定義モジュールをimportしたモジュールからもアクセス可能。
internal モジュール内からのみアクセス可能。何も書かなければこれになる。
private ファイル内からのみアクセス可能
privateは他の言語とちょっと定義が違う。
アクセスレベルの信条は「あるアクセスレベルを持ったものの中に、それより高いアクセスレベルを持ったものがあってはだめ」。
privateにしたエンティティ内はデフォルト(表記なしで適用されるもの)がprivateになる。
publicにしたエンティティ内でもデフォルトはあいかわらずinternal。
(信条の例外?)親クラスのメソッドを子クラスでオーバーライドするときにアクセス権を広げる方向に変更出来る。
Initializerは所属するクラスのアクセスレベルより下げることは出来る。例外として、Required Initializerは所属するクラスのアクセスレベルと同じでないとだめ。
デフォルトイニシャライザーはクラスのアクセスレベルと同じになる。ただし、クラスがpublicのときはデフォルトイニシャライザーはInternalになる。これをpublicにしたいときはそう明記した定義public init() {}を書くこと。
ストラクチャのメンバ名イニシャライザは基本Internalでメンバにprivateがいるときはprivate。クラスのデフォルトイニシャライザーと同じように、publicにしたいときはわざわざ書かないとだめ。
プロトコル内のものはプロトコル自体のアクセスレベルと同じ。プロトコルで書かれているものは実装した先でも変更は不可。
プロトコルを継承した子プロトコルはアクセスレベルを下げることが出来る。上げるのは不可。
あるプロトコルを適用しているあるクラスの中のプロトコルの部分の(実質的な)アクセスレベルは、クラスのアクセスレベルとプロトコルのアクセスレベルの低い方になる。
Extentionも下方向に変更可能。
型エイリアスのアクセスレベルは元のやつから下方向に変更可能。

まあ、アクセス権の制御は使わない人は使わない(全部デフォルトで問題ない)と思う。


Advanced Operators

難易度★★★☆☆
演算子オーバーロードはObjective-Cには(たしか)なかったので初めて学ぶ。他にもObjective-Cになかったものがいろいろある。

opt in to 〜の方を選択する
precedence 優先される

メモ

Swiftではデフォルトではオーバーフローしない。
デフォルトでオーバーフローする演算子もあり、&で始まる。
~はビット反転、適用したい値の前に付ける
^が排他OR(値が違うビットが1)、適用したい2つの値の間に付ける
=のオーバーロードはだめ。? :もだめ。

コメント

このブログの人気の投稿

Swiftのコンパイルエラー寄せ集め

コンパイルエラー覚え書き(Objective-C)

AVAudioSession細かいことまとめ(late 2014)