---
schema_version: "1"
id: 0de3eb29b0089186a05a8981c7f6ccc622f29cfea1b12d6ed0eb7152320d6c4d
title: DataWeave での関数とラムダの操作
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.7/dataweave-functions-lambdas.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-functions-lambdas
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 08c0ccbbf0474951b90519defc2fe226c72835840ae87c3094db9e4a9560cf01
description: MuleSoft Documentation Site
release: "2.7"
latest: false
---
# DataWeave での関数とラムダの操作

DataWeave では、関数とラムダ (匿名関数) を値として渡すか、変数に割り当てることができます。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 のドキュメント](#1.2@dataweave::index.adoc)​を参照してください。 他の Mule バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。

`map`​ などの関数と共に DataWeave ファイルの本文内でラムダを使用する場合、その属性を明示的に名前付けするか、匿名のままにできます。どちらの場合も、ラムダは ​`$`​、​`$$`​、などとして参照できます。

## [](#関数の宣言および呼び出し)関数の宣言および呼び出し

`fun`​ キーワードを使用して、DataWeave スクリプトのヘッダーまたは本文内で関数を宣言できます。これで、スクリプトの本文の任意の場所で関数を呼び出すことができます。

関数を参照するには、​`functionName()`​ または ​`functionName(arg1, arg2, argN)`​ の形式を使用します。

各引数の括弧内で式を渡すことができます。括弧内の各引数を評価し、結果を、関数本文の実行内で使用する引数として渡します。

入力

```json
{
  "field1": "Annie",
  "field2": "Point",
  "field3": "Stuff"
}
```

変換

```dataweave
%dw 2.0
output application/json
fun toUser(obj) = {
  firstName: obj.field1,
  lastName: obj.field2
}
---
{
  "user" : toUser(payload)
}
```

出力

```json
{
  "user": {
    "firstName": "Annie",
    "lastName": "Point"
  }
}
```

## [](#型パラメーターの指定)型パラメーターの指定

DataWeave 構文バージョン 2.5 以降、コールサイトで関数の型パラメーターを指定できます。

入力

```json
{
  "measures": [1,2,4,1,5,2,3,3]
}
```

変換

```dataweave
%dw 2.5
output application/json

fun max<T>(elems: Array<T>): T = elems reduce ((candidate: T, currentMax = elems[0]) -> if (candidate > currentMax) candidate else currentMax)
---
{
  max: max<Number>(measures)
}
```

出力

```linenums
{
  "max": 5
}
```

## [](#var-へのラムダの割り当て)Var へのラムダの割り当て

`var`​ を介して定数ディレクティブを使用して、関数を変数として定義できます。

入力

```json
{
  "field1": "Annie",
  "field2": "Point",
  "field3": "Stuff"
}
```

変換

```dataweave
%dw 2.0
output application/json
var toUser = (user) -> {
  firstName: user.field1,
  lastName: user.field2
}
---
{
  "user" : toUser(payload)
}
```

出力

```json
{
  "user": {
    "firstName": "Annie",
    "lastName": "Point"
  }
}
```

## [](#ラムダでの名前付きパラメーターの使用)ラムダでの名前付きパラメーターの使用

次の例では、​`name`​ として明示的に名前付けされた属性と共にラムダを使用します。

入力

```dataweave
%dw 2.0
output application/json
var names = ["john", "peter", "matt"]
---
users: names map((name) -> upper(name))
```

変換

```json
{
  "users": ["JOHN","PETER","MATT"]
}
```

## [](#ラムダでの匿名パラメーターの使用)ラムダでの匿名パラメーターの使用

次の例では、明示的に名前付けされていないためにデフォルトで ​`$`​ として参照される属性と共にラムダを使用します。

変換

```dataweave
%dw 2.0
output application/json
var names = ["john", "peter", "matt"]
---
users: names map upper($)
```

出力

```json
{
  "users": ["JOHN","PETER","MATT"]
}
```

## [](#関連情報)関連情報

[サポートされるデータ形式](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-formats)

[DataWeave スクリプト](https://docs.mulesoft.com/jp/dataweave/2.7/dataweave-language-introduction)