<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>also</title>
	<atom:link href="https://bps-e.com/dev/tag/also/feed/" rel="self" type="application/rss+xml" />
	<link>https://bps-e.com/dev</link>
	<description>android アプリ開発 kotlin + jetpack compose + material 3</description>
	<lastBuildDate>Thu, 10 Nov 2022 15:23:10 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://bps-e.com/dev/wp-content/uploads/2022/10/cropped-logo3-32x32.png</url>
	<title>also</title>
	<link>https://bps-e.com/dev</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>[Android] 015. Scope function</title>
		<link>https://bps-e.com/dev/android-015/</link>
		
		<dc:creator><![CDATA[bps-e]]></dc:creator>
		<pubDate>Thu, 10 Nov 2022 15:00:08 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Kotlin]]></category>
		<category><![CDATA[also]]></category>
		<category><![CDATA[apply]]></category>
		<category><![CDATA[let]]></category>
		<category><![CDATA[run]]></category>
		<category><![CDATA[with]]></category>
		<guid isPermaLink="false">https://bps-e.com/dev/?p=428</guid>

					<description><![CDATA[スコープ関数 スコープ関数(Scope function)はオブジェクトのコンテキストで実行することを目的とした関数対象の変数に対してまとめた処理を行いたい時に使う感じです スコープ関数については以下を参照https:/ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><span id="toc1">スコープ関数</span></h2>



<p>スコープ関数(Scope function)はオブジェクトのコンテキストで実行することを目的とした関数<br>対象の変数に対してまとめた処理を行いたい時に使う感じです</p>



<p>スコープ関数については以下を参照<br><a rel="noopener" href="https://kotlinlang.org/docs/scope-functions.html" target="_blank">https://kotlinlang.org/docs/scope-functions.html</a></p>



<p>こちらのサイトの説明がわかりやすいです<br><a rel="noopener" href="https://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e" target="_blank">https://qiita.com/ngsw_taro/items/d29e3080d9fc8a38691e</a></p>



<p>リンク切れするかもしれないのでこちらでも同様の内容をまとめておきます</p>



<h3 class="wp-block-heading"><span id="toc2">機能リスト</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>function</th><th>対象object</th><th>戻値</th><th>拡張関数</th></tr></thead><tbody><tr><td>let</td><td>it</td><td>指定可</td><td>○</td></tr><tr><td>run</td><td>this</td><td>指定可</td><td>○</td></tr><tr><td>with</td><td>this</td><td>指定可</td><td>✕</td></tr><tr><td>apply</td><td>this</td><td>対象object</td><td>○</td></tr><tr><td>also</td><td>it</td><td>対象object</td><td>○</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><span id="toc3">let</span></h3>



<p>主にnullableな変数に対して使用<br>nullの場合は処理しないとか</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-kt" data-lang="Kotlin"><code>val text: String? = &quot;test&quot;
val length = text?.let { it.length } ?: 0</code></pre></div>



<p>itは以下のように名前をつけることもできる</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-kt" data-lang="Kotlin"><code>val length = text?.let { text -&gt;
    text.length
}</code></pre></div>



<h3 class="wp-block-heading"><span id="toc4">run</span></h3>



<p>thisを省略したい時に使用</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-kt" data-lang="Kotlin"><code>val length = text?.run { length } ?: 0</code></pre></div>



<h3 class="wp-block-heading"><span id="toc5">with</span></h3>



<p>withは拡張関数ではないので以下のように使用</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-kt" data-lang="Kotlin"><code>val length = with(text) { this?.length ?: 0 }</code></pre></div>



<h3 class="wp-block-heading"><span id="toc6">apply</span></h3>



<p>対象自身を返したい場合に使用</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-kt" data-lang="Kotlin"><code>class Datas(var text: String? = null, var length: Int = 0)

val datas = Datas().apply {
    text = &quot;test&quot;
    length = text!!.length
}
println(&quot;${datas.text} ${datas.length}&quot;)</code></pre></div>



<h3 class="wp-block-heading"><span id="toc7">also</span></h3>



<p>自身を返したい時でitなので名前を変えて使いたい時に使用</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-kt" data-lang="Kotlin"><code>val datas = Datas().also { datas -&gt;
    datas.text = &quot;test&quot;
    datas.length = datas.text!!.length
}</code></pre></div>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="has-text-align-right">Android Studio Dolphin 2021.3.1 Patch 1 built on September 30, 2022</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
