Yapay zekayı kullanarak CoffeeScript'ı Crystal'a dönüştürün

Yapay zeka kullanılarak CoffeeScript'dan kaynaktan kaynağa kod çevirisi, kaynak kodunu analiz etmek ve anlamak için doğal dil işleme (NLP) tekniklerinden ve makine öğrenimi algoritmalarından yararlanmayı içerir

ActionScript

FAQ

Çeviri Zorlukları

Çeviri Problemi CoffeeScript Söz Dizimi Örneği Crystal Söz Dizimi Örneği Puan (1-10)
Fonksiyon Tanımları square = (x) -> x * x square(x : Int32) : Int32 { x * x } 7
Liste Kapsamları [x * 2 for x in [1, 2, 3]] [x * 2 for x in [1, 2, 3]] 9
İkincil Dönüşler double = (x) -> x * 2 double(x : Int32) : Int32 { x * 2 } 6
Splat Operatörü args = (a, *rest) -> rest args(a : Int32, *rest : Array(Int32)) 5
Sınıf Mirası class Dog extends Animal class Dog < Animal 8
Dize Yerleştirme "Hello, #{name}" "Hello, #{name}" 10
Varsayılan Parametreler greet = (name = "World") -> "Hello, #{name}" greet(name : String = "World") : String { "Hello, #{name}" } 7
Kalın Ok Fonksiyonları => (kalın ok) -> (lambda) 8
Yapılandırma Ataması a, b = [1, 2] a, b = [1, 2] 9
Zincirleme Metot Çağrıları array.map (x) -> x * 2).filter (x) -> x > 2 array.map { |x| x * 2 }.filter { |x| x > 2 } 8

Fonksiyon Tanımları

CoffeeScript dilinde, fonksiyonlar -> söz dizimi kullanılarak tanımlanabilir ve bu, ikincil dönüşlere izin verir. Crystal dilinde, fonksiyonlar açık tür açıklamaları gerektirir ve fonksiyon gövdesi için {} kullanılır.

CoffeeScript Örneği:

square = (x) -> x * x

Crystal Örneği:

def square(x : Int32) : Int32
  x * x
end

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu

Liste Kapsamları

Hem CoffeeScript hem de Crystal liste kapsamlarını destekler, ancak söz dizimi çok benzer olduğundan bu çeviri oldukça basittir.

CoffeeScript Örneği:

result = [x * 2 for x in [1, 2, 3]]

Crystal Örneği:

result = [x * 2 for x in [1, 2, 3]]

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu

İkincil Dönüşler

CoffeeScript ikincil dönüşlere izin verirken, Crystal metot gövdesinde açık dönüş ifadeleri gerektirir.

CoffeeScript Örneği:

double = (x) -> x * 2

Crystal Örneği:

def double(x : Int32) : Int32
  x * 2
end

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu

Splat Operatörü

CoffeeScript dilindeki splat operatörü değişken uzunlukta argümanlara izin verirken, Crystal dilinde tür açıklamaları gerektirir.

CoffeeScript Örneği:

args = (a, *rest) -> rest

Crystal Örneği:

def args(a : Int32, *rest : Array(Int32))
  rest
end

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu

Sınıf Mirası

Her iki dil de sınıf mirasını destekler, ancak söz dizimi biraz farklıdır.

CoffeeScript Örneği:

class Dog extends Animal

Crystal Örneği:

class Dog < Animal
end

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu

Dize Yerleştirme

Dize yerleştirme her iki dilde de benzer şekilde işlenir, bu da bu çeviriyi oldukça basit hale getirir.

CoffeeScript Örneği:

greeting = "Hello, #{name}"

Crystal Örneği:

greeting = "Hello, #{name}"

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu

Varsayılan Parametreler

Her iki dil de varsayılan parametreleri destekler, ancak söz dizimi biraz farklıdır.

CoffeeScript Örneği:

greet = (name = "World") -> "Hello, #{name}"

Crystal Örneği:

def greet(name : String = "World") : String
  "Hello, #{name}"
end

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu

Kalın Ok Fonksiyonları

CoffeeScript kalın ok fonksiyonları için => söz dizimini kullanırken, Crystal lambdalar için -> kullanır.

CoffeeScript Örneği:

add = (a, b) => a + b

Crystal Örneği:

add = -> (a : Int32, b : Int32) { a + b }

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu

Yapılandırma Ataması

Her iki dil de yapılandırma atamasını destekler, bu da bu çeviriyi oldukça basit hale getirir.

CoffeeScript Örneği:

a, b = [1, 2]

Crystal Örneği:

a, b = [1, 2]

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu

Zincirleme Metot Çağrıları

Zincirleme metot çağrıları her iki dilde de desteklenir, ancak söz dizimi biraz farklıdır.

CoffeeScript Örneği:

result = array.map (x) -> x * 2).filter (x) -> x > 2

Crystal Örneği:

result = array.map { |x| x * 2 }.filter { |x| x > 2 }

CoffeeScript Dokümantasyonu
Crystal Dokümantasyonu