Передача пользовательских параметров скрипту scala поверх DataStax C * [duplicate]

В то время как обещания и обратные вызовы хорошо работают во многих ситуациях, боль в задней части выражает нечто вроде:

if (!name) {
  name = async1();
}
async2(name);

. В итоге вы пройдете через async1; проверьте, не определено ли name или нет, и соответственно вызовите обратный вызов.

async1(name, callback) {
  if (name)
    callback(name)
  else {
    doSomething(callback)
  }
}

async1(name, async2)

Хотя в в порядке хорошо , это раздражает, когда у вас много подобных случаев и обработка ошибок.

Fibers помогает в решении проблемы.

var Fiber = require('fibers')

function async1(container) {
  var current = Fiber.current
  var result
  doSomething(function(name) {
    result = name
    fiber.run()
  })
  Fiber.yield()
  return result
}

Fiber(function() {
  var name
  if (!name) {
    name = async1()
  }
  async2(name)
  // Make any number of async calls from here
}

Вы можете проверить проект здесь .

14
задан monster 10 December 2014 в 15:31
поделиться

1 ответ

Когда вы настраиваете основную строку в

 def main(args: Array[String]) {

, вы готовите свой основной, чтобы принимать что-либо после строки .jar в качестве аргумента. Он сделает массив с именем «args» для вас из них. Затем вы получаете доступ к ним, как обычно, с помощью args [n].

Возможно, было бы хорошо проверить ваши аргументы на тип и / или формат, обычно это если кто-то другой, кроме вас, мог бы запустить это.

Поэтому вместо установки

val logFile = "String here"

установите его

val logFile = args(0)

, а затем передайте файл в качестве первого аргумента. Проверьте исправить-отправьте документы для получения дополнительной информации об этом, но просто введите его на следующей строке.

18
ответ дан suiterdev 23 August 2018 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: