<?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>fun &#8211; Mahdi Tajik</title>
	<atom:link href="http://www.mahditajik.ir/tag/fun/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mahditajik.ir</link>
	<description>I&#039;m Mahdi Tajik. I am project manager and Full-stack Android developer. welcome to my personal website.</description>
	<lastBuildDate>Thu, 29 Nov 2018 14:15:15 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.6</generator>

<image>
	<url>http://www.mahditajik.ir/wp-content/uploads/2015/03/cropped-sample-logo-MT-2-32x32.png</url>
	<title>fun &#8211; Mahdi Tajik</title>
	<link>http://www.mahditajik.ir</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>tailrec در Kotlin چیست؟</title>
		<link>http://www.mahditajik.ir/tailrec-%d8%af%d8%b1%da%a9%d8%a7%d8%aa%d9%84%db%8c%d9%86-%da%86%db%8c%d8%b3%d8%aa/</link>
					<comments>http://www.mahditajik.ir/tailrec-%d8%af%d8%b1%da%a9%d8%a7%d8%aa%d9%84%db%8c%d9%86-%da%86%db%8c%d8%b3%d8%aa/#respond</comments>
		
		<dc:creator><![CDATA[mahdi]]></dc:creator>
		<pubDate>Sun, 03 Dec 2017 07:29:52 +0000</pubDate>
				<category><![CDATA[آموزش]]></category>
		<category><![CDATA[#تابع]]></category>
		<category><![CDATA[#کاتلین]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[kotlin]]></category>
		<category><![CDATA[tailrec]]></category>
		<guid isPermaLink="false">http://www.mahditajik.ir/?p=2701</guid>

					<description><![CDATA[<p>امکانات بسیار زیادی در Kotlin قرار گرفته تا بتواند به زبان رسمی Android مبدل گردد. tailrec یکی از آنهاست. این امکان در توابع بازگشتی کاربرد دارد. همانطور که می دانید استفاده از توابع بازگشتی معمولاً روشی نا صحصیح است که با مقیم شدن در حافظه تا تمام شدن تمامی مراحل، می تواند باعث stack overflow ...</p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/tailrec-%d8%af%d8%b1%da%a9%d8%a7%d8%aa%d9%84%db%8c%d9%86-%da%86%db%8c%d8%b3%d8%aa/">tailrec در Kotlin چیست؟</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2704" src="http://www.mahditajik.ir/wp-content/uploads/2017/12/tailrec.jpg" alt="" width="800" height="486" srcset="http://www.mahditajik.ir/wp-content/uploads/2017/12/tailrec.jpg 800w, http://www.mahditajik.ir/wp-content/uploads/2017/12/tailrec-300x182.jpg 300w, http://www.mahditajik.ir/wp-content/uploads/2017/12/tailrec-768x467.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" />امکانات بسیار زیادی در <strong>Kotlin</strong> قرار گرفته تا بتواند به زبان رسمی <strong>Android</strong> مبدل گردد. <strong>tailrec</strong> یکی از آنهاست. این امکان در توابع بازگشتی کاربرد دارد. همانطور که می دانید استفاده از توابع بازگشتی معمولاً روشی نا صحصیح است که با مقیم شدن در حافظه تا تمام شدن تمامی مراحل، می تواند باعث <strong>stack overflow</strong> گردد و در طراحی الگوریتم روشی <strong>brutal</strong> است. این امکان وجود دارد تا توابع برگشتی را با استفاده از حلقه بهینه کرد.</p>
<p style="text-align: justify;">با گذاشتن <strong>tailrec</strong> در اول تابع بازگشتی، <strong>kotlin</strong> خودش آن را هنگام کامپایل کردن در صورت برقرار بودن شرایط، پیاده سازی آن تابع را با حلقه انجام داده و کد را بهینه می کند. به عنوان نمونه به تابع فاکتوریل زیر توجه کنید:</p>
<pre class="crayon-plain-tag">fun fact(x: Long): Long {
    tailrec fun factTail(y: Long, z: Long): Long {
        return if (y == 0L) z
        else {
            return factTail(y - 1, y * z)
        }
    }
    return factTail(x, 1)
}</pre>
<p style="text-align: justify;">برای صدا زدن کافیست:</p>
<pre class="crayon-plain-tag">logg("$5! : ${fact(5)}")</pre>
<p style="text-align: justify;">استفاده از <strong>tailrec</strong> شرایط دارد از قبیل اینکه بعد از صدا زدن <strong>recursive</strong> نباید متد دیگری وجود داشته باشد و یا مثلا اینکه درون بلاک های<strong> try/catch/finally</strong> نمی توان استفاده کرد. مثال کامل <strong>Kotlin</strong> را می توانید در لینک ذیل مشاهده کنید.</p>
<p><a href="https://github.com/mahdit83/KotlinExample" target="_blank" rel="noopener noreferrer"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-2146" src="http://www.mahditajik.ir/wp-content/uploads/2016/12/github_download.png" alt="github_download" width="230" height="70" /></a>منبع: <span style="color: #ff9900;"><a style="color: #ff9900;" href="http://www.biitecode.ir" target="_blank" rel="noopener">بایت کد</a></span></p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/tailrec-%d8%af%d8%b1%da%a9%d8%a7%d8%aa%d9%84%db%8c%d9%86-%da%86%db%8c%d8%b3%d8%aa/">tailrec در Kotlin چیست؟</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.mahditajik.ir/tailrec-%d8%af%d8%b1%da%a9%d8%a7%d8%aa%d9%84%db%8c%d9%86-%da%86%db%8c%d8%b3%d8%aa/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Androidify</title>
		<link>http://www.mahditajik.ir/androidify/</link>
					<comments>http://www.mahditajik.ir/androidify/#respond</comments>
		
		<dc:creator><![CDATA[mahdi]]></dc:creator>
		<pubDate>Mon, 02 Feb 2015 09:19:43 +0000</pubDate>
				<category><![CDATA[معرفی]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[اندروید]]></category>
		<guid isPermaLink="false">http://www.mahditajik.ir/?p=1321</guid>

					<description><![CDATA[<p>امروز قصد معرفی  یک برنامه فان را دارم. با استفاده از این اپلیکیشن می‌توانید روبات اندرویدی خود را با استفاده از مجموعه‌ی پوشاک و آرایش مو و چهره ایجاد کنید. گوگل امکان نام‌گذاری روبات هر کاربر را نیز میسر کرده است. شاید بهترین کاربرد این اپلیکیشن، ایجاد آواتار برای شبکه‌های اجتماعی باشد. در ابتدا یک ...</p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/androidify/">Androidify</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://www.mahditajik.ir/wp-content/uploads/2015/02/com.google.android.apps_.androidify.png"><img decoding="async" loading="lazy" class="aligncenter  wp-image-1323" alt="com.google.android.apps.androidify" src="http://www.mahditajik.ir/wp-content/uploads/2015/02/com.google.android.apps_.androidify.png" width="173" height="173" srcset="http://www.mahditajik.ir/wp-content/uploads/2015/02/com.google.android.apps_.androidify.png 512w, http://www.mahditajik.ir/wp-content/uploads/2015/02/com.google.android.apps_.androidify-150x150.png 150w, http://www.mahditajik.ir/wp-content/uploads/2015/02/com.google.android.apps_.androidify-300x300.png 300w, http://www.mahditajik.ir/wp-content/uploads/2015/02/com.google.android.apps_.androidify-70x70.png 70w" sizes="(max-width: 173px) 100vw, 173px" /></a></p>
<p>امروز قصد معرفی  یک برنامه فان را دارم.</p>
<p>با استفاده از این اپلیکیشن می‌توانید روبات اندرویدی خود را با استفاده از مجموعه‌ی پوشاک و آرایش مو و چهره ایجاد کنید. گوگل امکان نام‌گذاری روبات هر کاربر را نیز میسر کرده است. شاید بهترین کاربرد این اپلیکیشن، ایجاد آواتار برای شبکه‌های اجتماعی باشد. در ابتدا یک روبات ساده‌ی سبز‌رنگ پیش روی شما قرار خواهد گرفت که می‌توانید با لمس اجزای بدن روبات، از قبیل دست‌ها، سر یا پاها یا قسمت میانی بدن، سایز آن را تغییر دهید. برای مثال می‌توانید روباتی با دستان بلندتر از حد معمول ایجاد کنید. نواری که در بخش پایین قرار دارد، تمامی زیور آلات و البسه‌ی قابل استفاده برای روبات نمایش داده شده است که با کلیک روی هر یک، می‌توان موارد دلخواه را انتخاب کرد و با کشیدن روی روبات خود تست کرد. نمونه ساخته شده توسط بنده را می توانید در ذیل مشاهده کنید:</p>
<p style="text-align: center;"><a href="http://www.mahditajik.ir/wp-content/uploads/2015/02/android.jpg"><img decoding="async" loading="lazy" class="aligncenter size-full wp-image-1322" alt="android" src="http://www.mahditajik.ir/wp-content/uploads/2015/02/android.jpg" width="500" height="500" srcset="http://www.mahditajik.ir/wp-content/uploads/2015/02/android.jpg 500w, http://www.mahditajik.ir/wp-content/uploads/2015/02/android-150x150.jpg 150w, http://www.mahditajik.ir/wp-content/uploads/2015/02/android-300x300.jpg 300w, http://www.mahditajik.ir/wp-content/uploads/2015/02/android-70x70.jpg 70w" sizes="(max-width: 500px) 100vw, 500px" /></a></p>
<p style="text-align: center;"><a href=" http://cafebazaar.ir/app/com.google.android.apps.androidify/?l=fa" target="_blank" class="shortc-button small green">دانلود نرم افزار</a>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>نوشته <a rel="nofollow" href="http://www.mahditajik.ir/androidify/">Androidify</a> اولین بار در <a rel="nofollow" href="http://www.mahditajik.ir">Mahdi Tajik</a> پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>http://www.mahditajik.ir/androidify/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
