Почему сборка Ionic ios cordova не работает

Я не думаю, что в Scala есть что-то особенное или сложное в фигурных скобках. Чтобы справиться с кажущимся сложным использованием их в Scala, просто сохраните пару простых вещей:

  1. фигурные скобки образуют блок кода, который оценивает последнюю строку кода (почти все языки делают это)
  2. функция, если требуется, может быть сгенерирована блоком кода (следует правилу 1)
  3. фигурные скобки могут быть опущены для однострочного кода, за исключением случая (выбор Scala)
  4. круглые скобки могут быть опущены при вызове функции с кодовым блоком в качестве параметра (выбор Scala)

Давайте объясним несколько примеров в трех предыдущих правила:

val tupleList = List[(String, String)]()
// doesn't compile, violates case clause requirement
val filtered = tupleList.takeWhile( case (s1, s2) => s1 == s2 ) 
// block of code as a partial function and parentheses omission,
// i.e. tupleList.takeWhile({ case (s1, s2) => s1 == s2 })
val filtered = tupleList.takeWhile{ case (s1, s2) => s1 == s2 }

// curly braces omission, i.e. List(1, 2, 3).reduceLeft({_+_})
List(1, 2, 3).reduceLeft(_+_)
// parentheses omission, i.e. List(1, 2, 3).reduceLeft({_+_})
List(1, 2, 3).reduceLeft{_+_}
// not both though it compiles, because meaning totally changes due to precedence
List(1, 2, 3).reduceLeft _+_ // res1: String => String = <function1>

// curly braces omission, i.e. List(1, 2, 3).foldLeft(0)({_ + _})
List(1, 2, 3).foldLeft(0)(_ + _)
// parentheses omission, i.e. List(1, 2, 3).foldLeft(0)({_ + _})
List(1, 2, 3).foldLeft(0){_ + _}
// block of code and parentheses omission
List(1, 2, 3).foldLeft {0} {_ + _}
// not both though it compiles, because meaning totally changes due to precedence
List(1, 2, 3).foldLeft(0) _ + _
// error: ';' expected but integer literal found.
List(1, 2, 3).foldLeft 0 (_ + _)

def foo(f: Int => Unit) = { println("Entering foo"); f(4) }
// block of code that just evaluates to a value of a function, and parentheses omission
// i.e. foo({ println("Hey"); x => println(x) })
foo { println("Hey"); x => println(x) }

// parentheses omission, i.e. f({x})
def f(x: Int): Int = f {x}
// error: missing arguments for method f
def f(x: Int): Int = f x
0
задан mahi-man 7 March 2019 в 02:01
поделиться

1 ответ

Хотя есть много хороших ответов (например, https://stackoverflow.com/a/44102979/4553162 ), моя проблема была на самом деле из-за неправильной записи в моем файле config.xml, где я настраивал плагин ветки cordova:

<branch-config>
    <branch-key value="my-live-key" />
    <uri-scheme value="my-scheme" />
    <link-domain value="myapp.app.link" />
    <ios-team-release value="INCORRECT_APP_PREFIX" />
</branch-config>

INCORRECT_APP_PREFIX на самом деле перезаписывает то, что у вас было в build.json, и является источником ошибки подписи кода.

Сменив его на правильный префикс приложения, сборка завершилась правильно

0
ответ дан mahi-man 7 March 2019 в 02:01
поделиться
Другие вопросы по тегам:

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