7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Swift】Point-Free Style:クリーンでエレガントなコードを書くためのテクニック

7
Last updated at Posted at 2023-03-03

はじめに

ポイントフリースタイルという言葉を目にし、気になったのでChatGPTで調べてみました。コード例にはSwiftを使用しています。この記事は、情報の正確性を保証するものではありませんので、あくまで参考程度に留めてください。

Point-Free Styleとは何か

ポイントフリースタイルは、関数型プログラミングのテクニックの一つで、関数合成や部分適用を行う際に、引数を使わずに関数を表現する方法です。このスタイルは、関数の中身よりも引数や名前よりも関数の型に注目するため、より抽象的で、よりコンパクトなコードを記述することができます。

Point-Free Styleの例

以下は、Swiftでのポイントフリースタイルの例です。

let numbers = [1, 2, 3, 4, 5]

func addOne(x: Int) -> Int {
    return x + 1
}

// 非ポイントフリースタイル
let result = numbers.map({ x in addOne(x: x) })
print(result) // [2, 3, 4, 5, 6]

// ポイントフリースタイル
let result2 = numbers.map(addOne)
print(result2) // [2, 3, 4, 5, 6]

この例では、mapメソッドを使って、配列の各要素に1を加えています。非ポイントフリースタイルの例では、クロージャを使って、addOne関数を呼び出しています。しかし、ポイントフリースタイルの例では、addOne関数を直接mapメソッドに渡しています。このように、ポイントフリースタイルを使うと、コードを簡潔にすることができます。


また、ポイントフリースタイルを使うと、関数合成や部分適用などのテクニックをより簡単に実現できます。

func multiplyByTwo(x: Int) -> Int {
    return x * 2
}

// 非ポイントフリースタイル
let result3 = numbers.map({ x in multiplyByTwo(x: addOne(x: x)) })
print(result3) // [4, 6, 8, 10, 12]

// ポイントフリースタイル
let result4 = numbers.map(addOne).map(multiplyByTwo)
print(result4) // [4, 6, 8, 10, 12]

この例では、最初に各要素に1を加え、その後2倍にすることが目的です。最初の例では、addOneとmultiplyByTwoの2つの関数をクロージャで組み合わせています。しかし、ポイントフリースタイルを使用すると、2つの関数を直接mapメソッドで合成することができます。

まとめ

ポイントフリースタイルを使うと、コードがより短く、より読みやすくなります。ぜひ、使ってみてください。


ご覧いただきありがとうございました。

🐦 Twitter: @shota_appdev

📱 個人アプリ: Symbols Explorer

7
1
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
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?