X



CoffeeScript
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2011/11/11(金) 03:21:00.78
について語るスレ
0002デフォルトの名無しさん
垢版 |
2011/11/11(金) 03:28:01.74
『煮解賭(にげと)』

明朝末期、中國北東部の男達の間で、素麗建(すれたて)なる遊びが流行していた。

先端に話題旗をくくりつけた棒を地面に立て、合図と共に棒に駆け寄りに旗を奪
い合うという、己の機敏さを誇示する遊びであった。

やがてこの遊びにも飽きた者達が、毒草を煮込んだ煮汁を飲み、その解毒剤を旗
代わりにして奪い合うという競技に発展させた。
これのせいで命を落とす者が続出したが、競走に勝利したものは現人神として賞
賛され、朝廷に仕える者を輩出するほどであった。

この、解毒剤を賭けた戦いは「煮解賭」と呼ばれ、時代を左右する勝負の場でも
最も信頼できる、決定権獲得試合として行われてきた。

己の速さを誇示できることの少なくなった現代社会においては、電子掲示板などで
「2ゲットォォ!」と、機会を変えて、現代人が機敏さを争っているのかもしれない。

(民明書房刊 「DNAに刻まれた勝負心 現代人の奇行のルーツを探る」より)
0003デフォルトの名無しさん
垢版 |
2011/11/11(金) 03:37:12.00
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0004デフォルトの名無しさん
垢版 |
2011/11/17(木) 18:12:34.00
元々ロジックに厚みを持たせないjsが、多少楽に書けても、だからなんだって感じ。
node.jsで使うなら、まぁ分からんでもないが、それならmode.jsスレでやれと。
0006デフォルトの名無しさん
垢版 |
2011/11/18(金) 01:33:21.06
lst.filter((x) -> x % 2 == 0)
lst.filter(x -> x % 2 == 0)

でぜんぜん違うコードを吐き出す
良い言語だと思うけど吐き出されるjavascript常にチェックしとかないとちょっと怖い
0007デフォルトの名無しさん
垢版 |
2011/11/18(金) 14:35:48.17
つーか例えばC言語をマクロで別言語にしたら袋叩きなのに、
CoffeeScriptがあっさり受け入れられてしまうJavaScriptはすげえな。
よほどのクソ言語という傍証
0008デフォルトの名無しさん
垢版 |
2011/11/18(金) 15:51:42.05
コーヒースクリプトって名前がダサすぎるよ
もっと洒落た名前だったら、使ってやろうかなという気も起きるんだが
0012デフォルトの名無しさん
垢版 |
2011/11/19(土) 12:46:39.99
cfrontのことを言っているのかテンプレートのことを言っているのか判断しかねるな。
0013デフォルトの名無しさん
垢版 |
2011/11/19(土) 13:56:42.87
何にせよC言語にコンパイルするプログラミング言語なんていくらでもあるし
原理的にはほとんどの言語がそういう作りにすることが出来る
その言語をクソと判断する理由が全く不明
0016デフォルトの名無しさん
垢版 |
2011/11/20(日) 00:13:45.99
まともなフリーの開発環境がないに等しいのはしょうがないのか
rubymineやtextmateは良いらしいけど有料だし
0018デフォルトの名無しさん
垢版 |
2011/12/03(土) 13:49:37.83
え?JS書かずにCSで書けば良くね?って考えが浸透し始めてきた時期だと思ってたんだが…
0021pros and cons めどい
垢版 |
2011/12/20(火) 19:58:57.86
>>20
http://net.tutsplus.com/articles/interviews/should-you-learn-coffeescript/
http://news.ycombinator.com/item?id=3370428
http://franklinchen.com/blog/2011/11/06/the-real-reason-for-the-coffeescript-slash-javascript-flame-war/

tanepiper Tane Piper
A war against CoffeeScript is like a war against Atheism, a stupid
pointless war for silly strawman gods

http://core-js.org/documentation
https://github.com/raganwald/homoiconic/blob/master/2011/12/jargon.md
p.s. My friend Nikolai had this to say about CoffeeScript providing a
standard way to solve common JavaScript problems such implementing OOP:
"Those who do not learn from history, are doomed to repeat it."
http://xkcd.com/927/
0025デフォルトの名無しさん
垢版 |
2012/03/19(月) 10:53:44.78
jQueryを使ったfoo.coffeeを、コマンドラインで実行する方法ってあります?
0027デフォルトの名無しさん
垢版 |
2012/03/19(月) 17:11:55.91
>>26
いえ、node.jsでは動かしたくありません。

逆に質問なんですが、jQueryを使ったcoffeeスクリプトをコマンドラインで動かすには、
node.jsが必須ということですか?
であれば、しかたありません。node.jsを使います。
0029デフォルトの名無しさん
垢版 |
2012/03/21(水) 00:19:33.71
PerlスレやRubyスレにも同様の宣伝書き込みしてるようだな
Wikibooksでもいじってみれば?
0030trydev
垢版 |
2012/03/27(火) 02:31:52.54
with 的なの出来ないかなと
ほんのちょっと試行錯誤したら出来たo(^-^)o
なんかちょっと幸せな気分だ…
(サンプルは .net を意識した訳じゃないよ多分)

using = (obj, func)->
__func.call(obj)

System =
__Console:
____WriteLine: (str)->
______document.writeln str + "<br>"

using System, ()->
__@Console.WriteLine "Hello,World!"
__@Console.WriteLine "1+1=#{1+1}"

(using 関数の func.call(obj) を try 〜 catch 〜 finally で囲ったら
更に幸せな感じが…自分のおつむが幸せなだけかしら)
0031trydev
垢版 |
2012/03/27(火) 03:05:24.98
あっ func.call obj のほうが…もう遅いかorz
後、()-> じゃなくてもよいのかな。
まあ、finally で obj の終了処理書けそうだしよいかo(^-^)o
0032trydev
垢版 |
2012/04/23(月) 03:48:31.85
何の意味もないかもだけど…
プロトタイプも同じ様に書けたorz

class Base
__constructor:->
____@name="Base"

Base::getName=->@name

base=new Base
alert base.getName() # Base

using=(obj,func)->func.call obj

using Base,->
__@::setName=(name)->@name=name

base.setName "Test"
alert base.getName() # Test
0033trydev
垢版 |
2012/05/01(火) 16:15:48.37
using 関数にオブジェクトを渡して無名関数を返させ、
それに関数を渡して実行させるようにしました。
(もう訳わかりませんねorz)

タイプ数は結局変わらないけど、
(括弧であるかスペースとカンマの違い)
若干自然な感じになった気がします。

注) using と括弧の間にスペースを入れたり
-> を括弧に付けるとおかしくなります。

例) using (base)-> …

前者は using 関数に、
base を引数に持つ無名関数を渡しているようです。

例) using(base)-> …

後者は parse error がでていますので、
多分文法的におかしいのだと…
呼び出しなのか、定義なのか…
0034trydev
垢版 |
2012/05/01(火) 16:20:50.00
以下サンプルです。
(気分で書いてますので、各コードで記法に統一性がみられないので悪しからずorz)
using = (obj)->
__(func)-> func.call obj

class Base
__pvalue = null
__constructor: ->
____pvalue = "Base"
__get: -> pvalue
__set: (value)->
____pvalue = value

base = new Base
alert base.get()

base.set "Hello"
using(base) ->
__alert @get()
__@set "Test"
__alert @get()
0035trydev
垢版 |
2012/06/11(月) 02:37:15.41
Java スクリプトプログラマーズガイド見てて、
Java インターフェースの実装みたく
匿名クラス書けないかと思い無駄な時間を費やしてしもたorz

java =
_lang:
__Runnable: () ->
___(obj) ->
____clazz = () ->
____clazz::[p] = v for p, v of obj
____clazz

obj = new (java.lang.Runnable()
_run: () -> alert 'hello'
)

obj.run()

動いたo(^-^)o
で、ふと

obj = new Object
_run: () -> alert 'world'

obj.run()

当たり前だけどやっぱり動いたorz
てか、new Object すら要らない…
0036trydev
垢版 |
2012/06/13(水) 01:00:39.70
クラスではなく、オブジェクトを返すように修正

java =
_lang:
__Runnable: () ->
___(obj) ->
____impl = {}
____impl[p] = v for p, v of obj
____impl

java.lang.Runnable::run = () ->
_alert 'Not implemented!?'

obj = new java.lang.Runnable() {
_run: () -> alert 'Hello,World!'
}

obj.run()
java.lang.Runnable::run()
0037trydev
垢版 |
2012/06/13(水) 01:55:17.94
実装部を Interface 関数に移し、
new の際の括弧を省略可能に修正

Interface = (obj) ->
_impl = {}
_impl[p] = v for p, v of obj
_impl

Test = (obj) ->
_return Interface obj if obj
_(obj) -> Interface obj

Test::run = () -> alert 'Not implemented!?'

obj = new Test() {
_run: () -> alert 'Hello,World!'
}
obj.run()

obj = new Test
_run: () -> alert 'Hello,Work!'
obj.run()

obj = new Test
obj.run() # error
0038デフォルトの名無しさん
垢版 |
2012/06/13(水) 10:36:52.14
全角スペースでインデントしろよ
0040trydev
垢版 |
2012/06/13(水) 23:40:03.82
>>38-39
ずっとオ(ry
とりまサンクス

インターフェースを整理
かなりスッキリしたかな?
(何もしていない obj は御愛嬌)

Interface = (obj) ->
 (obj) ->
  return Interface.impl obj if obj
  (obj) -> Interface.impl obj

Interface.impl = (obj) ->
 impl = {}
 impl[p] = v for p, v of obj
 impl

Interface.notImplemented = () ->
 alert 'Not implemented!?'

Test = Interface
 run: Interface.notImplemented

obj = new Test
 run: alert 'Hello,World!'

obj.run()
0041trydev
垢版 |
2012/06/14(木) 23:28:05.78
未実装なのに動く(!)ように修正
(空コンストラクタだと定義時に割り当てた Interface.notImpl が呼ばれる)
すると new 時の括弧省略なにそれな感じにorz

obj = new Test() { ... }

とは書けない、まあ要らないか...
あと、impl に合わせて notImpl に名前を短縮

Interface = (iobj) ->
 (obj=iobj) -> Interface.impl obj

Interface.impl = (obj) ->
 impl = {}
 impl[p] = v for p, v of obj
 impl

Interface.notImpl = () -> alert 'Not implemented!?'

Test = Interface {
 run: Interface.notImpl
}

obj = new Test
obj.run()

obj = new Test {
 run: () -> alert 'Hello,World!'
}
obj.run()
0042trydev
垢版 |
2012/06/16(土) 23:12:37.12
定義したインターフェースのみ動作するように修正

Interface = (iobj) ->
 (obj=iobj) ->
  Interface.impl obj, iobj

Interface.impl = (obj, iobj) ->
 impl = {}
 impl[p] = obj[p] for p of iobj
 impl

OddEvenTest = Interface {
 run: null
 odd: null
 even: null
}

obj = new OddEvenTest {
 start: (n) -> @run n
 run: (n) ->
  alert "#{n} = #{@even n}"
 odd: (n) ->
  return @even n-1 if n
  'odd'
 even: (n) ->
  return @odd n-1 if n
  'even'
}
obj.run 100
obj.start 1 # error
0046trydev
垢版 |
2012/07/13(金) 08:13:07.51
つ CoffeeScriptファーストガイド モダンJavaScriptによるアプリケーション開発 (NEXTーONE):Amazon.co.jp:本
http://www.amazon.co.jp/gp/aw/d/4798125997/ref=redir_mdp_mobile

>>45
ここは CoffeeScript のスレだから、
戦わせる必要無いけど「JSX vs haXe」 とか

面白く無いけど
いっそ「【混ぜるな】JShaXe【危険】」

なり新しくスレを立てないとかな
0047デフォルトの名無しさん
垢版 |
2012/07/22(日) 01:37:57.53
CoffeeScriptの名前の由来ってなんですか?
0048デフォルトの名無しさん
垢版 |
2012/07/22(日) 02:50:08.85
>>47
Java
0049デフォルトの名無しさん
垢版 |
2012/07/22(日) 11:12:51.71
>>48
Javaっていうかジャワコーヒーから?
よく分からんけど
0050デフォルトの名無しさん
垢版 |
2012/07/22(日) 13:03:03.35
コーヒー自体を俗にJavaと呼ぶ。
0051デフォルトの名無しさん
垢版 |
2012/07/27(金) 16:39:42.99
あっという間にオワコン化した気がするなこれ
何ヶ月か前にプチ論争になってたけど、JS生で書くのと迷うレベルじゃ駄目だわ
それどころか変態文法がES6にフィードバックされてJSの変態化に貢献してしまう有様
0052デフォルトの名無しさん
垢版 |
2012/07/27(金) 16:42:39.65
数千行以下ならJSで変態テク使ったりせず普通に書く
数千行超えたらHaxeなりGWTなり、きちんとした静的JS変換言語使うでFAで。
CSは中途半端だった。
0054デフォルトの名無しさん
垢版 |
2012/07/27(金) 16:47:10.75
>>53
あれもオワコン気味
一応ヲチしてるが最近仕様が激変していて追いつけん。

あとはJSXはがんばれ期待してるぞってところか。
0056デフォルトの名無しさん
垢版 |
2012/08/05(日) 06:32:35.58
      \       ヽ           |        /        /
          \      ヽ               /      /
‐、、         殺 伐 と し た ス レ に CoffeeScript が ! !  _,,−''
  `−、、                  __/\            _,,−''
      `−、、              _|    `〜┐         _,,−''
                      _ノ       ∫
                  _,.〜’        /
───────‐     ,「~             ノ    ───────‐
               ,/              ` ̄7
                |      H a x e   /
           _,,−'   ~`⌒^7            /    `−、、
        _,,−''            丿            \,      `−、、
 ,'´\           /  _7       /`⌒ーへ_,._⊃         /`i
 !   \       _,,-┐    \    _,.,ノ          r‐-、、      /   !
 ゙、   `ー--<´   /      L. ,〜’             ゙、  >−一'′   ,'
  y'  U      `ヽ/     /            ヽ      ヽ '´     U   イ
            ┏━━━┓  ┏━━┓  ┏┓    ┏┓
            ┗━┓┏┛  ┃┏━┛  ┃┗┓┏┛┃
            ┏┓┃┃    ┃┗━┓  ┏━┗┓━┛
            ┃┗┛┃    ┏━┛┃  ┃┏┛┗┓┃
            ┗━━┛    ┗━━┛  ┗┛    ┗┛
0057デフォルトの名無しさん
垢版 |
2012/09/19(水) 22:29:00.34
JavaScript + jQuery と CoffeeScriptを比較したら
コード量は殆ど減らないよな。

行数が減るのは 括弧閉じのみのわずか数文字の行が省略出来るだけだし
文字数が減るののは、function と return の文字数のみ。
0058デフォルトの名無しさん
垢版 |
2012/09/20(木) 09:22:46.43
>>57
>行数が減るのは 括弧閉じのみのわずか数文字の行が省略出来るだけだし
んなこたない、普通に色々な機能のお陰で減るだろ

jQueryは何か関係有るのか?
0060デフォルトの名無しさん
垢版 |
2012/09/20(木) 11:35:06.16
>>57
CoffeeScriptが解決するものは、jQueryのそれとは違うんだけどな。
つか、なんでJavaScript+jQueryとCofeeScript+jQueryを比べないの?
0063デフォルトの名無しさん
垢版 |
2012/09/20(木) 16:51:13.19
なんでそんな比較するのかわからん
0064デフォルトの名無しさん
垢版 |
2012/09/21(金) 03:18:50.12
>>60
なんでかというとつまりこういうこと。

----------------------------
jQuery = JavaScript拡張 + DOM操作
JavaScript + jQuery = JavaScript + JavaScript拡張 + DOM操作

----------------------------
CoffeeScript = JavaScript + JavaScript拡張
CoffeeScript + jQuery = JavaScript + JavaScript拡張×2 + DOM操作

----------------------------

JavaScript拡張×2ってのは結局同じような機能を二重に追加してるだけだから意味が無い。

だから、殆ど変わらないってこと。
0065デフォルトの名無しさん
垢版 |
2012/09/21(金) 03:24:34.11
>>58
> んなこたない、普通に色々な機能のお陰で減るだろ

減らないとは言っていない。

ただ、100文字中の10文字減って嬉しい?ってこと
サンプルコードではなく実務レベルのコードだと、
自動インデントなどで勝手に入るスペースを除くと、1/10へればいいほうだと思う。

(JavaScriptでもセミコロン省けるの知ってるよね? forやifは一行でも書けるの知ってるよね?)

しかも1/10の中で多くを占めるのはfunctionとreturnの文字数だろう。
もし、エディタの自動入力機能を使っていたとしたら、タイプするの差は限りなく小さい。
0066uy
垢版 |
2012/09/21(金) 05:44:06.06
この手のバカ減らないよな
タイプ速度にしても自動挿入と手打ちどっちが早いと思ってんだよ
インテリセンスとかタイプ遅いゴミカス用のバリアフリー機能じゃねえか
0067デフォルトの名無しさん
垢版 |
2012/09/21(金) 06:53:42.06
>>64-65
jQueryとCoffeeScriptが同じような機能って、なんじゃそりゃ?
セミコロン省略?挙句に「forやifは一行でも書けるの知ってるよね?」だって?
レベル低すぎてマジで引くわ。お前どうせCoffeeScriptでjQueryが使えると思ってなかったとかそういうオチだろどうせ。

で、手元のファイルを見てみたけれど、実際1/10くらいしか減ってないのがほとんどだな
嬉しいか?って言われると正直何とも思わないな
0068デフォルトの名無しさん
垢版 |
2012/09/21(金) 07:57:48.55
functionがうざすぎて可読性が落ちる
単純なタイプ数の問題じゃない

書き捨てのゴミコード量産してる奴には
可読性なんて関係ないけどね
どうせ読み直さないから
0069デフォルトの名無しさん
垢版 |
2012/09/21(金) 11:44:29.64
> JavaScript + jQuery = JavaScript + JavaScript拡張 + DOM操作

> CoffeeScript = JavaScript + JavaScript拡張
を比べたら、CofeeScriptを使った時にDOM操作をベタで書かなきゃならないんだから、
そりゃコード量は同じか下手したらCofeeScriptを使った方が多くなるわ。

アホなの?
0070デフォルトの名無しさん
垢版 |
2012/09/21(金) 12:38:41.90
>>69
だから最初からコード量に大差はないと言ってるだろw
0072uy
垢版 |
2012/09/21(金) 12:44:35.37
どちらにしろ中途半端言語触るくらいならjs直でいい
使用ユーザーの少ない言語で開発するっていうのは自分がバグを潰してあげるデバッガーに立候補するようなもん
0073デフォルトの名無しさん
垢版 |
2012/09/21(金) 13:00:08.48
>>71
解決するもの言ってみな。
できないこと(不可能なこと)が、できるようになるんだよな?

結局のところ、文字数が少ないだけだろう?
0074デフォルトの名無しさん
垢版 |
2012/09/21(金) 13:04:31.65
>>68
functionがあることと
可読性は別問題だよ。

0075デフォルトの名無しさん
垢版 |
2012/09/21(金) 13:15:17.34
>>73
理解力ゼロだなお前。

>>57
> JavaScript + jQuery と CoffeeScriptを比較したら
> コード量は殆ど減らないよな。

>>60
> つか、なんでJavaScript+jQueryとCofeeScript+jQueryを比べないの?

>>64
> なんでかというとつまりこういうこと。
> JavaScript拡張×2ってのは結局同じような機能を二重に追加してるだけだから意味が無い。
> だから、殆ど変わらないってこと。

>>69
> CofeeScriptを使った時にDOM操作をベタで書かなきゃならないんだから、
> そりゃコード量は同じか下手したらCofeeScriptを使った方が多くなるわ。

>>70
> だから最初からコード量に大差はないと言ってるだろw

>>60
> つか、なんでJavaScript+jQueryとCofeeScript+jQueryを比べないの?

という流れだ。
0076デフォルトの名無しさん
垢版 |
2012/09/21(金) 13:17:35.40
>>73
> 結局のところ、文字数が少ないだけだろう?

http://coffeescript.org/
読め。

まぁ、CofeeScriptのメリットがタイプする文字数が少なくなるだけだと思うんならそれでもいいんだが、
そもそもお前は「ほとんど変わらん」という主張じゃないのか?
0078デフォルトの名無しさん
垢版 |
2012/09/21(金) 13:33:45.15
backbone.jsと一緒に使うと、幸せになれるらしいぞ。

俺は、cofeescriptもbackbone.jsも使ったことないけどw
0080デフォルトの名無しさん
垢版 |
2012/09/21(金) 13:43:46.04
「CofeeScriptってタイプ量は減るけどただそれだけで、デメリットのが多いよ」

という主張ならわかるが、コード量が減らないという主張はどうかと思う。
CofeeScript知らずにdisってると思われても仕方が無い。
0081デフォルトの名無しさん
垢版 |
2012/09/21(金) 13:50:00.66
>>76
それみて変わらんというのが
そもそもの発端なんだけどw

# CoffeeScript
number = -42 if opposite

# JavaScript
if (opposite) number = -42

前に持ってくるか後に持ってくるかだし。

JavaScriptの例は、関数にできることをインライン化して
書いてるだけで最後の例なんて、

# CoffeeScript (40文字)
cubes = (math.cube num for num in list)

# JavaScript+jQuery (59文字)
cubes = $.each(list, function(num){return math.cube(num)})

こうかけるよね。そのうちfunctionとreturnで14文字。を差し引くと5文字。
サンプルの差の大部分は、funcitonとreturnであることがわかるだろう?
0083デフォルトの名無しさん
垢版 |
2012/09/21(金) 13:56:28.56
>>81
じゃこれ、CofeeScriptの変換後のコードじゃなくお前なりのコードで同等のもの書いてみな。

class Animal
 constructor: (@name) ->

 move: (meters) ->
  alert @name + " moved #{meters}m."
0084デフォルトの名無しさん
垢版 |
2012/09/21(金) 13:59:58.88
こっちもよろしく。

class Tweet extends Backbone.Model
 defautls:
  'from_user': ''
  'profile_image_url': ''
  'text': ''

class TweetList extends Backbone.Collection
 model: Tweet
 initialize: ->
 update: (query) ->
  api.getTweets(query).done (tweets) =>
   @reset(tweets)
   if not tweets.length then @trigger('noresults')
0085デフォルトの名無しさん
垢版 |
2012/09/21(金) 14:04:11.10
>>84はかわいそうだからこっちでいいや。

class Foo
 constructor: (name) ->
  console.log name

class Bar extends Foo
 constructor: ->
  super 'unk'
0087デフォルトの名無しさん
垢版 |
2012/09/21(金) 14:08:07.02
function Animal(name) {
 return {
  move: function(meters) {
   alert (name + " moved ”+meters+"m")
  }
 }
}

これでいいのか? 1文字だけの行が省略できるってのが
CoffeeScriptのメリットだねw
0088デフォルトの名無しさん
垢版 |
2012/09/21(金) 14:09:38.88
>>85
ちょっとでないといけないので、コピペ
http://d.hatena.ne.jp/sutara_lumpur/20110128/1296174208

var Parent = {
hoge:'hoge!'
};
var Child = $.extend({}, Parent, {
hoge:'fuga!',
echo:function(){ alert(this.hoge); }
});
Child.echo(); //『hoge!』ではなく『fuga!』と表示される
0093デフォルトの名無しさん
垢版 |
2012/09/21(金) 16:09:05.13
はい、一旦ただいまw
またすぐ出るけど。

>>89
書き方さえわかれば、同等のコードに置き換えられるだろ?

>>92
JavaScriptにクラスはないよ。
クラスを表現するには、オブジェクト(ハッシュ)を使う。
var obj = {}; //obj = オブジェクト
var obj = Obj( return {} ); //← Obj関数は{}を返す。Obj = クラス名相当

var obj = Obj(  return { method: function() {} } ); //メソッドを追加しました。

obj.method()を呼んだ時、methodの中でthisを参照すると、objオブジェクト自身にアクセスできる。
これを強制的に変更したい時は、applyやcallを使う。

selfは呼び出し元オブジェクト(this)ではなく、呼び出し先オブジェクト自身を参照したい時に、
内部でthisをself変数にとっておく。ときによく使われる変数名。この話のselfかな?

prototypeとか使い出すと、コードがもっと複雑になるけど、
jQueryを使えば>>88のように簡単に書けるんだ。
0094デフォルトの名無しさん
垢版 |
2012/09/21(金) 16:21:44.60
>>88は、継承の書き方をコピペしただけだけど、

>>87は同等だと思うが?

var a = Animal('cat')
var b = Animal('dog)

a.move(1); // cat moved 1m
b.move(2); // dog moved 2m
0095デフォルトの名無しさん
垢版 |
2012/09/21(金) 16:22:27.28
dogの終わりクオートを書き損じたw
0096デフォルトの名無しさん
垢版 |
2012/09/21(金) 16:26:58.91
あ、わかったよw
nameプロパティの話か。

function Animal(name) {
 return {
  name: name,
  move: function(meters) {
   alert (this.name + " moved ”+meters+"m")
  }
 }
}

これでいいかい?
0097デフォルトの名無しさん
垢版 |
2012/09/21(金) 18:16:11.60
>>96とか
プロトタイプベースのOOPのやり方知ってるか?
基本的に、プロトタイプベースで実装しないと、CoffeeScriptと同等にならない。
>>96のコードで
Animalにbark()ってメソッドを後から追加するにはどうするの?
0098デフォルトの名無しさん
垢版 |
2012/09/21(金) 18:16:58.48
念のため言っとくと、

function Animal(name) {
 return {
  name: name,
  move: function(meters) {
   alert (this.name + " moved ”+meters+"m")
  }
  bark: function() {
  }
 }
}

ってことじゃないからな。
010092
垢版 |
2012/09/21(金) 18:33:48.46
>>93
> JavaScriptにクラスはないよ。
そんなこと知ってるよ。だからクォートしてるんだよ。
「JavaScript クラス」でググってみなよ。みんな普通にクラスって言ってるから。

> prototypeとか使い出すと、コードがもっと複雑になるけど、
その複雑さを隠して簡単に書けるのがCofeeScriptなんだよ。
>>96がCofeeScriptのプロトタイプベースの実装と同等かどうかは、俺はそんなに
詳しくないからわからん。
protoとか__proto__とかnew使った時の挙動とか。
なんとなく違いそうだけど。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況