Semak tiada dan kemudian tetapkan nilai daripada struktur

PHPz
Lepaskan: 2024-02-09 13:54:08
ke hadapan
525 orang telah melayarinya

检查 nil 后从结构体中赋值

PHP editor Strawberry akan memperkenalkan kepada anda teknik pengaturcaraan biasa hari ini - "semak sifar dan kemudian tetapkan nilai daripada struktur". Semasa menulis kod, kita sering menghadapi situasi di mana kita perlu mendapatkan nilai medan tertentu daripada struktur. Walau bagaimanapun, disebabkan kemungkinan nilai sifar, mengambil nilai secara langsung boleh menyebabkan program ranap. Untuk menyelesaikan masalah ini, kita perlu melakukan semakan sifar sebelum mengambil nilai untuk memastikan kestabilan program. Artikel ini akan memperkenalkan pelaksanaan khusus teknik ini secara terperinci untuk membantu pembaca lebih memahami dan mengaplikasikannya dalam pembangunan sebenar.

Kandungan soalan

Saya mempunyai struktur, yang mengandungi unsur-unsur seperti struktur.

Andaikan pengedaran saya adalah seperti berikut:

validfrom := dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore Data ini dinamik dan mana-mana elemen pada bila-bila masa mungkin sifar disebabkan oleh ralat penghuraian atau tiada data.

Sebagai contoh, kdmrequiredextensions 可以为 nil,当我尝试访问 contentkeysnotvalidbefore ia akan membuang ralat rujukan penunjuk sifar.

Adakah mungkin untuk mempunyai kaedah yang mengambil elemen dan menyemak rantaian nilai satu demi satu, kembali hanya jika tiada unsur tiada.

validfrom := checkandassign(dkdm.authenticatedpublic.requiredextensions.kdmrequiredextensions.contentkeysnotvalidbefore)
Salin selepas log masuk

Saya mencuba pernyataan if sebelum tugasan, tetapi mengharapkan cara yang lebih bersih.

if dkdm.AuthenticatedPublic.RequiredExtensions != nil &&
    dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtension != nil {
      validFrom = dkdm.AuthenticatedPublic.RequiredExtensions.KDMRequiredExtensions.ContentKeysNotValidBefore
}
Salin selepas log masuk

Penyelesaian

Adakah mungkin untuk mempunyai cara yang mengambil elemen dan menyemak rantaian nilai satu demi satu dan hanya kembali jika tiada unsur yang tiada.

Tidak, tiada sintaks atau alatan seperti itu sedang digunakan.

Saya mencuba pernyataan if sebelum tugasan, tetapi mengharapkan cara yang lebih bersih.

if kenyataan adalah cara yang "bersih". Anda boleh memendekkannya dengan memperkenalkan pembolehubah baharu seperti

if re := dkdm.AuthenticatedPublic.RequiredExtensions; re != nil && 
    re.KDMRequiredExtension != nil  {
    ....
}
Salin selepas log masuk

Atas ialah kandungan terperinci Semak tiada dan kemudian tetapkan nilai daripada struktur. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!