어제 질문을했고 내 문제의 대부분을 해결하는 멋진 답변을 받았습니다. 12 개의 증분으로 할당 된 11 개의 색상과 12 개의 증분마다 반복되는 모양으로 특정 숫자 값을 조합하려고했습니다.이 코드를 살펴보고 내가 바꿀 수있는 것이 있으면 알려주십시오
ex: 0:black:circle, 1:black:cross, 2:black:star...12
0:brown:circle, 1:brown:cross, 2:brown:star...12
0:red:circle, 1:red:cross, 2:red:star...12
등 모든 숫자가 하나의 색상 및 모양으로 지정 될 때까지 계속됩니다. 아래 코드는이 작업을 수행합니다. 그러나 그것은 내가 예상하지 못한 방식으로 수행합니다. 출력은 아래에 있습니다.
struct ValueStruct {
var numValue: Int
var color: String
var shape: String
init(numValue: Int, color: String, shape: String) {
self.numValue = numValue
self.color = color
self.shape = shape
}
}
var startingNumValue = 0
let colorsArray = ["Black", "Brown", "Red", "Yellow", "Orange", "Green", "Grey", "Blue", "Purple", "Pink", "White"]
let shapesArray = ["Circle", "Cross", "Star", "Rectangle", "Triangle", "Square", "Heart", "Crown", "Line", "Diamond", "Ellipse", "Sun"]
var containingArray:[ValueStruct] = []
for colorItems in colorsArray {
for shapeItems in shapesArray {
containingArray.append(ValueStruct(numValue: startingNumValue, color: colorItems, shape: shapeItems))
startingNumValue += 1
}
이것은 출력이 놀이터에서 보이는 것과 같습니다.
1)이 작업을 수행하는 가장 간단한 방법입니까? 일반 루프의 출력은 대개 하나의 창에 표시되며 완료 될 때까지 & 이상으로 시작하는 것보다 중지되는 방식으로 표시됩니다.
2) startingNumValue
에 상한선을 설정하는 방법이 있습니까? 128로 가야하는데 나중에 오류가 발생할 수 있습니다.
3) 그리고 마침내 이것은 놀이터에서 정상적으로 작동하지만 for colorItems in colorsArray
라인에서 시작하여 정규 프로젝트에서 Statements are not allowed at the top level
오류가 발생합니다.이를 처리하는 가장 좋은 방법은 무엇입니까?
Re # 2 : 11 색 및 12 공유는 11 * 12 = 132 개의 가능한 조합을 만듭니다. 128 개의 숫자로 어떻게 인코딩 할 예정입니까? –
나는 가능하다면 그곳에서 카운트를 멈추려 고하고 있다는 것을 이해한다. –