スウィフトでは、延長は、のファクトの後にクラスのメンバーを定義する方法です。機能を構成するのか、あなたが言うことができる、それが(合計初心者くさいから来る)される空想方法:Swiftの拡張機能のような他の言語はありますか?
extension Double {
var mm: Double { return self * 1_000.0 }
func mm1() -> Double { return self * 1_000.0 }
}
func mm(a: Double) -> Double {
return a * 1_000.0
}
print("One meter is \(1.mm) milimeters")
print("One meter is \(1.mm1()) milimeters")
print("One meter is \(mm(1)) milimeters")
私はこのような何かを見たことがありません。このようなことは他の言語でもありますか?
C#のようなものがあります:https://msdn.microsoft.com/en-us/library/bb383977(v=vs.110).aspx – hnh
JavaScriptクラスはプロトタイプを使用しています(ただし、配列などの組み込み関数には強く推奨されません)。あるいは直接的には、私は、Goが構造化されている方法では、他の方法で定義されたメソッドを持つことは不可能だと考えています。同様の原則は、構造体を操作するいくつかの関数(派手な構文を持たないオブジェクト指向)を作った場合、C言語にも当てはまります。 – Dave
ああ、もちろんSmalltalkとObjCはカテゴリを使って行うことができます。これらの拡張機能はSwift拡張機能とは異なりますが(monkey-patch ;-)。 https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/CustomizingExistingClasses/CustomizingExistingClasses.html – hnh