我有一个用Spray编写的JSON协议
# Create virtual machine
Write-Host "Creating virtual machine '$vmName' in resource group '$resourceGroupName'";
$virtualMachineConfig = New-AzVmConfig -VMName "$vmName" -VMSize "Standard_D2_v3" -IdentityType UserAssigned -IdentityID "$($userAssignedIdentity.Id)" `
| Set-AzVMOperatingSystem -CustomData $encodedScript -Windows -ComputerName "$vmname" -Credential $Credential -ProvisionVMAgent -EnableAutoUpdate `
| Add-AzVMNetworkInterface -Id $nic.Id `
| Set-AzVMSourceImage -PublisherName 'MicrosoftWindowsServer' -Offer 'WindowsServer' -Skus '2016-Datacenter' -Version latest `
| Set-AzVMBootDiagnostics -Enable -ResourceGroupName $resourceGroup.ResourceGroupName -StorageAccountName $bootDiagStorageAccount.StorageAccountName;
现在哪个更好?导入此伴侣对象或扩展特征?
答案 0 :(得分:2)
如果要创建一些JsonFormat
实例进行喷雾,则可以直接创建一个object
,然后import
。这意味着您只有一个隐式val和对象的实例。
object MyJsonProtocol extends DefaultJsonProtocol {
implicit object MyTypeJsonFormat extends RootJsonFormat[MyType] {
def write(v: MyType): JsValue = ...
def read(value: JsValue): MyType = ...
}
implicit val myClassFormat = jsonFormat5(MyClass)
}
class OtherClass {
import MyJsonProtocol._
...
}
答案 1 :(得分:0)
这取决于您的逻辑。如果定义一些隐式,则导入对象和扩展特征是不同的。如果导入,则定义与本地优先级相同的隐式。如果扩展,则与本地的相比,创建低优先级的隐式。