---
schema_version: "1"
id: 92f61be02c191d3c9ea5a67cc3c2f5a2496448fce6263cc4f075b816a2771b43
title: 関数を引数として渡す
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/dataweave/2.8/dataweave-cookbook-pass-functions-as-arguments.md
canonical_url: https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-pass-functions-as-arguments
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 1b37418871f584b9d4bd54d2fa0cf0b4d4cc9c891ca78b4042546664acc202c5
description: MuleSoft Documentation Site
release: "2.8"
latest: false
---
# 関数を引数として渡す

この DataWeave の例では、2 つの引数 (関数と関数を適用する要素) を取得するベース関数をヘッダーで定義します。ベース関数は、受信した関数を取得した要素のキーとその子要素の各キーに再帰的に適用します。この場合、送信された関数はすべてのキーを小文字に設定します。 開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、​[DataWeave バージョン 1.2 の例](#1.2@dataweave::dataweave-examples.adoc)​を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。

この例では、以下を使用します。

- 再帰的に適用されるカスタム関数。たとえば、最初に取得する要素の子ごとに自分自身をコールします。
- 要素の各子を並び替える ​`mapObject`​。
- 入力のすべてのキーを小文字にする文字列ライブラリの ​`lower`​。
- 渡された要素が ​`Object`​ 型である (子がいる) かどうかをチェックする ​`is`​。
- 条件を満たしている場合に関数コール自体のみを設定し、条件を満たしていない場合にその分岐の再帰的なループを終了する ​`if`​ および ​`else`​。

DataWeave スクリプト:

```dataweave
%dw 2.0
import * from dw::core::Strings
output application/xml
fun applyToKeys(element, func) =
    if (element is Object)
        element mapObject (value, key) -> {
        (func(key)) : applyToKeys( value, func)
        }
    else element
---
applyToKeys(payload, (key) -> lower(key))
```

入力 XML ペイロード:

```xml
<CATALOG>
  <CD>
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>10.90</PRICE>
    <YEAR>1985</YEAR>
  </CD>
  <CD>
    <TITLE>Hide your heart</TITLE>
    <ARTIST>Bonnie Tyler</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>CBS Records</COMPANY>
    <PRICE>9.90</PRICE>
    <YEAR>1988</YEAR>
  </CD>
</CATALOG>
```

出力 XML:

```xml
<?xml version='1.0' encoding='US-ASCII'?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
  <cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <country>UK</country>
    <company>CBS Records</company>
    <price>9.90</price>
    <year>1988</year>
  </cd>
</catalog>
```

## [](#関連する例)関連する例

- [カスタム追加関数の定義](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-define-a-custom-addition-function)
- [定義に基づいた動的なマップ](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-map-based-on-an-external-definition)
- [リスト内のデータをフラット化する関数の定義](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-define-function-to-flatten-list)
- [関数を使用したリストの条件付き削減](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook-conditional-list-reduction-via-function)

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

- [DataWeave セレクター](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-selectors)
- [DataWeave の解説書](https://docs.mulesoft.com/jp/dataweave/2.8/dataweave-cookbook)