Поскольку один ПВХ может быть заявлен только один раз, Iam предполагает, что вы хотите монтировать подпапки в объеме в одном контейнере. Я указал подпуть в разделе volumeMounts, как показано ниже.
apiVersion: v1
kind: Pod
metadata:
name: my-lamp-site
spec:
containers:
- name: mysql
image: mysql
env:
- name: MYSQL_ROOT_PASSWORD
value: "rootpasswd"
volumeMounts:
- mountPath: /var/lib/mysql
name: site-data
subPath: mysql
- name: php
image: php:7.0-apache
volumeMounts:
- mountPath: /var/www/html
name: site-data
subPath: html
volumes:
- name: site-data
persistentVolumeClaim:
claimName: my-lamp-site-data
Выше фрагмент копируется из https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath
Я уверен, что вы, возможно, пробовали хост-путь, но поддержка 1,6-го уровня может помочь вашему делу.
Дайте мне знать, если это поможет или нет.
С уважением Sudhakar
Это так просто.
let dict = SaveDate.reduce(into: [String: Double]()) { (result, data) in
result[data.Label, default: 0] += data.Money
}
Или, точнее,
let dict = SaveDate.reduce(into: [String: Double]()) { [111][$1.Label, default: 0] += $1.Money }
dict
// ["test2": 15.0, "test3": 30.0, "test1": 100.0]
blockquote>
Примечание: Вы должны использовать lowerCamelCase для имен переменных в соответствии с рекомендациями Swift API .
Это может помочь:
import UIKit
struct TestData {
let label : String
var money : Double
}
var saveData = [TestData]()
saveData.append(TestData(label: "test1", money: 55))
saveData.append(TestData(label: "test1", money: 35))
saveData.append(TestData(label: "test2" , money: 15))
saveData.append(TestData(label: "test1" , money: 10))
saveData.append(TestData(label: "test3" , money: 30))
let testData = saveData.reduce([TestData](), { currentData, newElement in
var newDataArray = currentData // Swift doesn't allow modifying parameter
if newDataArray.count == 0 {
newDataArray.append(newElement)
} else {
if let sameLabelIndex = newDataArray.firstIndex(where: { [110].label == newElement.label }) {
newDataArray[sameLabelIndex].money += newElement.money
} else {
newDataArray.append(newElement)
}
}
return newDataArray
})
print(testData)
Документация Apple по reduce
: https://developer.apple.com/documentation/swift/array/2298686-reduce [114 ]
Вы можете использовать словарь для этого.
import UIKit
struct TestData {
let Label : String
var Money : Double
}
var SaveDate = [TestData]()
SaveDate.append(TestData(Label: "test1", Money: 55))
SaveDate.append(TestData(Label: "test1", Money: 35))
SaveDate.append(TestData(Label: "test2" , Money: 15))
SaveDate.append(TestData(Label: "test1" , Money: 10))
SaveDate.append(TestData(Label: "test3" , Money: 30))
var dictionaryOfValues:[String:Double] = [:]
func addUp() {
for currentItem in SaveDate {
dictionaryOfValues[currentItem.Label] = (dictionaryOfValues[currentItem.Label] == nil ? currentItem.Money : dictionaryOfValues[currentItem.Label] + currentItem.Money)
}
}
addUp()
print(dictionaryOfValues) //["test1": 100.0, "test2": 15.0, "test3": 30.0]
Я запустил это на Swift Playground.
Словарь может отслеживать, когда вы столкнулись с меткой или нет. Причина, по которой я это делаю dictionaryOfValues[currentItem.Label] = (dictionaryOfValues[currentItem.Label] == nil ? currentItem.Money : dictionaryOfValues[currentItem.Label] + currentItem.Money)
, заключается в том, что ему необходимо либо 1) добавить его в словарь, либо 2) добавить текущее значение к значению, уже существующему в словаре.
Всякий раз, когда вы будете готовы, вы можете позвонить addUp()
, и он сделает всю работу за вас.