• gurps'ta karakterde dogu$tan varolan belli ozellikler. (bkz: single handed) (bkz: bloody mess)
  • special sisteminde* karakterlerin sadece ba$langicta alabilecekleri, tercihen 1 ya da 2 olabilen (ya da olmayan), ozelliklere hem bonus hem de penalty veren secimler. bu tur secimler oyunun omrunu uzatmak acisindan mukemmeldir, degi$ik tatlar veren, bazi durumlarda cok iyi sonuc veren, bazi durumlarda direk sican, yani oyunu renklendiren karakterler yaratir. kombinasyonlar sinirsiz gibidir, ornegin sadece tek elini ustaca kullanabilen bir silah$or*, ya da hayvan gibi agir ama yava$ bir hayvanadam* gibi.
  • pailhead'in 1988 yılında yayınlanan ep'sinin adı. ep'nin cd versiyonunda pailhead'in i will refuse / no bunny 45'liği de yer almaktadır.

    1. man should surrender
    2. anthem
    3. don't stand in line
    4. ballad
    5. i will refuse
    6. no bunny
  • scala dilinde bir yapı. yakında php'ye de geliyor. şuradan ne oldukları anlaşılabilir. http://www.scala-lang.org/node/126
  • ne olduğunu http://www.scala-lang.org/node/126 adresinden anlayabilene madalya takacağım scala özelliği.

    bir trait aynı anda java ve oop terminolojilerindeki birçok konsepti aynı anda karşılayabilir.

    - trait interface'tir. traitlerin içindeki metodlar sadece metod imzasından ibaret olabilirler. ayrıca trait constructorları parametre alamazlar. bu yönleriyle traitler interfaceleri andırır
    - trait abstract classtır. yukarıda anlatılanlara ek olarak traitlerin içindeki metodlar metod implementasyonunu da içerebilirler. bu yönüyle traitler abstract classlara benzer.
    - trait mixindir. bir trait hiçbir zaman tek başına kullanılmaz, daima başka bir class'ın yancısı olarak ortamda bulunurlar. extends yerine with keywordü kullanılarak traitler halihazırda tanımlanmış bir class'ın davranışını manipüle etmekte kullanılabilir. örneğin aşağıdaki trait bağlandığı class'ın tostring metodunu tüm çıktısını büyük harfle üretecek biçimde değiştirir.

    trait uppercase {
    override def tostring = super.tostring.touppercase
    }

    eğer bu traiti örnek bir ortamda görmek istersek:

    class zopik(nane: string){
    override def tostring = nane
    }

    object nane extends app {
    val normal = new zopik("tongucyumruk")
    val upper = new zopik("tongucyumruk") with uppercase
    println(normal)
    println(upper)
    }

    kodu çalıştırdığımız zaman sonuç aşağudaki gibi olacaktır:

    tongucyumruk
    tongucyumruk --> bu büyük harfle ama sözlüğün casing kısıtlamaları elimi kolumu bağlıyor

    ikinci yarattığımız objeyi uppercase trait'i ile birleştirerek tostring metodunu override ediyoruz. bu sayede class'ın tanımlanmış davranışını manipüle etme şansımız oluyor.

    işte traitler böyle güzel şeyler.
  • çözdüğü problem sadece interface member'larla çalışabilecek kadar kapalı mantığa sahip kodların kolayca yeniden kullanılabilmesini sağlamak.

    mesela ienumerable diye interface'in var. bu ve türevlerinin kullanacağı bir count() method'un olsun istiyorsun. ama her ienumerable ve türevini implement eden yere count() baştan yazmak istemiyon.

    bi default count() implementasyonu olan abstract class yapabilirsin countedenumerable diye ama bu sefer de multiple inheritance imkanı olmamasından dolayı interface'in uygulanabileceği çoğu yerde uygulayamıyorsun.

    .net'te bu problemi ienumerable'a bir count() extension method'ı yazarak çözebiliyosun.

    scala'da bu problemi çözmek için interface yerine trait kullanıyorsun. aynen interface gibi tanımlanıyo içinde de bir count() method'ı oluyo ve by default ienumerable'ı sayarak çalışıyor. sen sonra list gibi bir class yaptığında ienumerable implement ederken count()'u yeniden daha hızlısından implement edebiliyorsun.

    trait'le extension method arasındaki en büyük fark extension method'ların kaynak koduna sahip olmadığınız kodlara rahatça ekleniyor olması. öte yandan extension method'lar trait'lerin dolaylı inheritance gibi imkanlarına sahip değil.
  • sanmıyorum çoğu developer php'nin yeni gelen trait özelliğini fazlaca kullanıyor olsun. fakat php'nin son zamanlarda bünyesine katmış olduğu en güzide yeniliklerden biri olduğu su götürmez bir gerçek. multiple inheritance özelliğini 5.3 ile değil de 5.4 ile getirmiş olması tek handikapı sayılabilir.
  • ing. ozellik, nitelik.
hesabın var mı? giriş yap