summaryrefslogtreecommitdiffhomepage
path: root/id-id/coffeescript-id.html.markdown
blob: fc876184fdb1cfb4aebac486beb2fc93e33d229e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
---
language: coffeescript
contributors:
  - ["Tenor Biel", "http://github.com/L8D"]
  - ["Xavier Yao", "http://github.com/xavieryao"]
filename: coffeescript-id.coffee
translators:
  - ["Rizky Luthfianto", "http://github.com/rilut"]
lang: id-id
---

CoffeeScript adalah bahasa sederhana yang diterjemahkan saat kompilasi ke dalam JavaScript,
dan bukan diterjemahkan pada saat *runtime*.  
CoffeeScript mencoba agar kode JavaScript yang dihasilkan tetap mudah dibaca
dan kompatibel dengan semua *runtime* JavaScript.

Lihat juga [website CoffeeScript](http://coffeescript.org/) yang memiliki tutorial lengkap tentang CoffeeScript.

```coffeescript
# CoffeeScript adalah bahasa hipster.
# Mengikuti tren bahasa modern lainnya.
# Sehingga, seperti Ruby dan Python, untuk komentar digunakan tanda pagar.

###
Ini adalah contoh blok komentar, yang nanti diterjemahkan langsung ke '/ *' dan '* /'
pada kode JavaScript yang dihasilkan.

Anda diharapkan sedikit memahami semantik JavaScript sebelum melanjutkan tutorial ini.
###

# Pengisian nilai variabel:
angka = 42 #=> var angka = 42;
kebalikan = true #=> var kebalikan = true;

# Kondisi:
angka = -42 if kebalikan #=> if(kebalikan) { angka = -42; }

# Fungsi:
kuadrat = (x) -> x * x #=> var kuadrat = function(x) { return x * x; }

isi = (wadah, cairan = "kopi") ->
  "Mengisi #{wadah} dengan #{cairan}..."
#=>var isi;
#
#isi = function(wadah, cairan) {
#  if (cairan == null) {
#    cairan = "kopi";
#  }
#  return "Mengisi " + wadah + " dengan " + cairan + "...";
#};

# Rentang:
list = [1..5] # => var list = [1, 2, 3, 4, 5];

# Objek:
fungsi_matematika =
  akar:   Math.sqrt
  kuadrat: kuadrat
  kubik:   (x) -> x * kuadrat x
#=> var fungsi_matematika = {
#    "akar": Math.sqrt,
#    "kuadrat": kuadrat,
#    "kubik": function(x) { return x * kuadrat(x); }
#   };

# *Splat*:
balapan = (pemenang, pelari...) ->
  print pemenang, pelari
#=>balapan = function() {
#    var pelari, pemenang;
#    pemenang = arguments[0], pelari = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
#    return print(pemenang, pelari);
#  };

# Cek keberadaan:
alert "Elvis ada!" if elvis?
#=> if(typeof elvis !== "undefined" && elvis !== null) { alert("Elvis ada!"); }

# Komprehensi *array*:
kubik_kubik = (fungsi_matematika.kubik angka for angka in list)
#=>kubik_kubik = (function() {
#     var _i, _len, _hasil;
#     _hasil = [];
#     for (_i = 0, _len = list.length; _i < _len; _i++) {
#         angka = list[_i];
#         _hasil.push(fungsi_matematika.kubik(angka));
#     }
#     return _hasil;
#})();

sayur_sayuran = ['brokoli', 'bayam', 'kemangi']
makan sayuran for sayuran in sayur_sayuran when sayuran isnt 'kemangi'
#=>sayur_sayuran = ['brokoli', 'bayam', 'kemangi'];
#
#for (_k = 0, _len2 = sayur_sayuran.length; _k < _len2; _k++) {
#  sayuran = sayur_sayuran[_k];
#  if (sayuran !== 'kemangi') {
#    makan(sayuran);
#  }
#}
```

## Referensi Tambahan

- [Smooth CoffeeScript (EN)] (http://autotelicum.github.io/Smooth-CoffeeScript/)
- [CoffeeScript Ristretto (EN)] (https://leanpub.com/coffeescript-ristretto/read)