2010-09-21 16 views
5

Şu anda MS-DOS komut dosyaları kullanmak yerine bir MySQL veritabanının yaşam döngüsünü kontrol etmek için Scala betiklerini kullanmaya çalışıyorum (Windows XP'deyim) .Scala'da başka bir betiğe atıfta bulunan bir komut dosyası yazmak mümkün mü?

Ben

..... bir yapılandırma sadece yapılandırma bilgilerini tutan komut dosyası ve 1 veya vb başlangıcında, stop, gösteri durumu, gibi çeşitli işlemleri gerçekleştirmek için yapılandırma bilgilerini kullanmak daha yönetim komut dosyalarını sahip olmak istiyorum

Başka bir Scala betiğini/imports/references içeren bir Scala betiği yazmak mümkün mü?

Scala yorumlayıcısının -i seçeneğine bir göz attım, ancak bu, istediğim gibi olmayan etkileşimli bir oturum başlatıyor.

cevap

3

Process kullanıyor ve diğer Scala komut dosyalarını başka herhangi bir komut gibi çağırıyordum.

+0

Scala'nın zenginliğinin yüzeyini ancak zorlukla çatlattığımı hissediyorum, bu yüzden OP'nin sorusunu okuduktan sonra Scala'nın java.lang.ProcessBuilder ötesine kendi başına bir şey eklediğini öğrendim ... ama hiçbir şey bulamadım. Bu dava mı? –

+0

@Rodney Evet. Daha güncel bir versiyonu olan SBT tarafından yaygın olarak kullanılmaktadır. Bu sürüm güncel değil ve muhtemelen Scala 2.8 altında bile derlenmiyor. Onu güncellemeyi planladığımı düşünüyorum, ama onun geliştiricisi ile konuşsan daha iyi olur. –

+0

Kullanım durumum için, İşlem, MySQL komut dosyalarını yürütmek için çok yararlı olacaktır. Çözümüm, Süreç kadar eksiksiz olmasa da, bunu yapmak için basit bir Scala kodu yazmıştım. Ancak, aradığım şey, başka bir Scala komut dosyasından bir scala betiğinde tanımlanan değişkenleri ve yöntemleri kullanma becerisidir. İşlemin bana nasıl yardımcı olacağını göremiyorum. Sling Scala komut dosyası motoru gibi bir şey oldukça yararlı görünüyor. –

4

Scala man'a göre, komut ön yüklemesi yalnızca etkileşimli modda çalışır.

Çözüm olarak, komut dosyasını çalıştırdıktan sonra etkileşimli moddan çıkabilirsiniz. İşte (başka jenerik birini içerir senaryo) child.bat ait kod:

::#! 
@echo off 
call scala -i genetic.bat %0 
goto :eof 
::!# 
def childFunc="child" 

println(geneticFunc) 
println(childFunc) 
exit; 

genericFuncgenetic.bat

de tanımlanır child.bat çıktısı:

>child.bat 
Loading genetic.bat... 
...  
geneticFunc: java.lang.String 
Loading child.bat... 
... 
childFunc: java.lang.String 
generic 
child 
+1

Teşekkürler. Etkileşimli mod bana çok yardımcı olmuyor. Bir geçici çözüm olarak, muhtemelen yapılandırma bilgilerini depolamak için XML kullanacağım ve 1'den fazla betiğe sahip olmak yerine, sadece çeşitli komutlar için komut satırı seçeneklerini aktaran tek bir komut dosyası yazacağım. –

+0

Oops, yorumumu yayınladığım sırada güncellemenizi görmedi. Metoduna bir göz atacağım. –

+0

Bu yaklaşımdaki tek sorun, komut dosyası etkileşimli modda yüklendiğinde, yorumlayıcı yığın üstbilgisini tanıyamaz ve bazı hataları konsola yazdırır. Ancak, betik sonunda düzgün çalıştığı için bu uyarılar göz ardı edilebilir. –

1

Seçeneklerden biri bir senaryo olması olurdu birlikte iki dosyayı birleştirir ve sonra başlatır, bir şey gibi:

@echo off 
type config.scala > temp.scala 
type code.scala >> temp.scala 
scala temp.scala 
del temp.scala 

veya benzeri. Sonra iki dilini istediğin gibi tutarsın.

İlgili konular