2013-01-14 35 views
10

@inline devletler için belgeleri:@line'dan derleyici hakkında daha fazla bilgi istemek?

derleyici açıklamalı yöntemi satır içi özellikle sert denemek gerektiğini talep yöntemler üzerinde bir ek açıklamadır.

Ancak, benzer @tailrec açıklama aksine derleyici (varsayılan olarak) bir yöntem satır içi başardı ilgili olsun veya olmasın herhangi bir bilgi sunmaz.

Derleyicinin açıklamalı bir yöntemi satır içine almayı başarma olasılığını belirlemenin bir yolu var mı?

Özellikle, derleyicinin, tüm makul durumlarda, işaretlediğim bir yöntemi satır içinde sunabileceğini söylemesini istiyorum.

+0

'-Yinline-warnings' ile derlemek istediğiniz şey değil mi? –

+0

Muhtemelen, neden -Yinline uyarılarının ne yaptığını açıklayan bir cevap eklemiyorsunuz? –

cevap

6

Öncelikle, -optimise (veya -Yinline I derleme yaparken scalać tek şey satır içi çalışacağım hatırlamamız gerekiyor) Düşünüyorum. there were 1 inliner warnings; re-run with -Yinline-warnings for details: Ben -optimise ile scalać olacak bana bir uyarı verir derlemek

class Meep { 
    @inline def f(x: Int) = x + 19 
} 

object Main extends App { 
    new Meep().f(23) 
} 

:

Aşağıdaki basit durumunu düşünün. Şimdi, gramer kıkırdama dışında, bu bana çok şey vermedi.

-Yinline-warnings ile yeniden derleyelim. Şimdi olsun: At the end of the day, could not inline @inline-marked method f. Tamam, bu çok yardımcı olmadı, ama sanırım özel bir derleyici bayrağı kullanmak için aldığım bu. :) inline uyarıların bazıları arada bir nebze daha faydalıdır - benzeri:

derleyici yardım Emit inlining warnings. (Normally surpressed due to high volume) olarak -Yinline-warnings açıklıyor, bu yüzden bir kullanılmak zorundadır tahmin (REPL olur) Could not inline required method f because bytecode unavailable. duruma göre.

Neyse, yukarıdaki snippet'te f tanımını @inline final def f(x: Int) = x + 19 olarak değiştirirsek, satır içi uyarısı gider ve yöntem düzgün bir şekilde satır içine alınacaktır.

Bu biraz yardımcı oldu umarım.

+0

Mükemmel, tam da aradığım şey bu. ALL scala derleyici seçenekleri için tam bir referansı biliyor musunuz? –

+3

Kabukta 'scalac -help',' scalac -X' ile gelişmiş seçenekler ve 'scalac -Y' ile' özel 'seçenekleri ile desteklenen tüm seçenekler hakkında bilgi alabilirsiniz. –

+0

Heh, Bunu bilmediğimi söylemekten utanıyorum. Derleme dahil olmak üzere tüm scala görevlerim için öncelikle IDE kullanıyorum. –

İlgili konular