Нет проблем с первого взгляда. Но есть еще несколько способов решить проблему пути к файлу.
$ {path.module} полезен при использовании file()
внутри модуля, обычно вы хотите указать путь относительно базы модуля, например: file("${path.module}/file")
.
Таким образом, ваш код может быть изменен на
resource "aws_iam_role_policy" "cloudcheckr" {
count = "${length(var.file_name)}"
role = "${aws_iam_role.cloudcheckr.id}" // An IAM role is created in another resource block
name = "${var.file_name[count.index]}"
policy = "${file("${path.module}/${var.file_name[count.index]}.json")}"
}
Если это не работает, попробуйте с format()
policy = "${file(format("%s/%s.json", "${path.module}, ${var.file_name[count.index]}"))}"
Должно быть хорошо при разделении тех, которые в отдельные файлы. Большую часть времени, когда Вы видите, что вещи реализовали тот путь, это просто, потому что эти 2 класса так сильно связываются вместе, что Вы действительно никогда не использовали бы один без другого.
Так, это - действительно просто вещь стиля. Нет никакого "волшебства" к тому, что они и определены и реализованы в том же файле.
Это - просто вопрос персонального предпочтения. Необходимо смочь разделить их, настолько же долго как Вы #import
один из заголовков от другого при необходимости. Objective C просто дает Вам выбор собрать в группу классы в файлах, а не Java, который вынуждает Вас разделить их. Если классы тесно связаны, может быть легче видеть, как все это работает все в одном файле, вместо того, чтобы иметь необходимость переключиться между несколькими.
Ваша оценка корректна. Два отдельных класса объявляются и определяются.
Вероятная причина того, чтобы сделать это состоит в том, что оба класса требуются, чтобы сделать независимо от того, что это - это Menu
делает. Наличие обоих классов в том же заголовке и источнике просто делает интерфейс более компактным.
Разделение его в два файла все еще работало бы.