Hướng dẫn python safe navigation operator - nhà điều hành điều hướng an toàn python
Vì vậy, tôi đã sử dụng Ruby một thời gian và tôi tự hỏi liệu có một cái gì đó giống như Navigator an toàn var name = articles?[0]?.Author?.Name;7 trong Python. Show
Dưới đây là một ví dụ về thời điểm sử dụng toán tử an toàn. Anthony
một người khác 7.1883 Huy hiệu vàng30 Huy hiệu bạc46 Huy hiệu Đồng3 gold badges30 silver badges46 bronze badges Đã hỏi ngày 15 tháng 3 năm 2019 lúc 15:09Mar 15, 2019 at 15:09
AnthonyanthonyAnthony 8921 Huy hiệu vàng13 Huy hiệu bạc24 Huy hiệu đồng1 gold badge13 silver badges24 bronze badges
1 câu trả lờiPython không có điều hướng an toàn nhưng var name = articles?[0]?.Author?.Name;8 đã được đề xuất. i.e.
Đã trả lời ngày 15 tháng 3 năm 2019 lúc 15:17Mar 15, 2019 at 15:17
Antarr Byrdantarr ByrdAntarr Byrd Phim thương hiệu vàng 23.5K3093 Huy hiệu bạc175 Huy hiệu đồng30 gold badges93 silver badges175 bronze badges 3
Trong lập trình hướng đối tượng, toán tử điều hướng an toàn (còn được gọi là toán tử chuỗi tùy chọn, toán tử cuộc gọi an toàn, toán tử điều kiện null, toán tử không chính xác) là một toán tử nhị phân trả về null nếu đối số đầu tiên của nó là null; Mặt khác, nó thực hiện một thao tác hội nghị phân tích theo quy định của đối số thứ hai (thường là truy cập thành viên đối tượng, chỉ mục mảng hoặc lệnh Lambda).safe navigation operator (also known as optional chaining operator, safe call operator, null-conditional operator, null-propagation operator) is a binary operator that returns null if its first argument is null; otherwise it performs a dereferencing operation as specified by the second argument (typically an object member access, array index, or lambda invocation). Nó được sử dụng để tránh kiểm tra và bài tập null rõ ràng tuần tự và thay thế chúng bằng chuỗi phương pháp/thuộc tính. Trong các ngôn ngữ lập trình trong đó toán tử điều hướng (ví dụ: ".") Dẫn đến một lỗi nếu được áp dụng cho một đối tượng null, toán tử điều hướng an toàn dừng đánh giá một chuỗi phương thức/trường và trả về null là giá trị của biểu thức chuỗi. Nó lần đầu tiên được Groovy 1.0 sử dụng vào năm 2007 [1] và hiện được hỗ trợ bằng các ngôn ngữ như C#, [2] Swift, [3] TypeScript, [4] Ruby, [5] Kotlin, [6] Rust [7] và khác. Hiện tại không có quy ước đặt tên phổ biến cho toán tử này, nhưng toán tử điều hướng an toàn là thuật ngữ được sử dụng rộng rãi nhất.safe navigation operator is the most widely used term. Ưu điểm chính của việc sử dụng toán tử này là nó tránh được kim tự tháp của sự diệt vong. Thay vì viết nhiều var name = articles?[0]?.Author?.Name;9 lồng nhau, các lập trình viên chỉ có thể sử dụng chuỗi thông thường, nhưng thêm các ký hiệu dấu câu hỏi trước các dấu chấm (hoặc các ký tự khác được sử dụng để xâu chuỗi). Trong khi người vận hành điều hướng an toàn và toán tử kết hợp NULL đều là người vận hành không nhận thức được, nhưng chúng khác nhau về mặt hoạt động.safe navigation operator and null coalescing operator are both null-aware operators, they are operationally different. Examples[edit][edit]Apex[edit][edit]Ví dụ về nhà điều hành điều hướng an toàn: [8] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name; C#[edit][edit]C# 6.0 trở lên có var result = callback?.Invoke(args);0, nhà điều hành truy cập thành viên điều kiện null (còn được Microsoft gọi là toán tử Elvis và không bị nhầm lẫn với việc sử dụng chung của nhà điều hành ELVIS, tương đương với C# là var result = callback?.Invoke(args);1, NULL kết hợp lại toán tử) và var result = callback?.Invoke(args);2, toán tử truy cập phần tử điều kiện null, thực hiện cuộc gọi không an toàn null của trình chỉ mục nhận được excessor. Nếu loại kết quả của quyền truy cập thành viên là loại giá trị, thì loại kết quả của truy cập điều kiện null của thành viên đó là phiên bản vô hiệu của loại giá trị đó. [9] Ví dụ sau lấy tên của tác giả của bài viết đầu tiên trong một loạt các bài viết (với điều kiện mỗi bài viết có thành viên var result = callback?.Invoke(args);3 và mỗi tác giả có thành viên var result = callback?.Invoke(args);4) và kết quả là var result = callback?.Invoke(args);5 nếu mảng là var result = callback?.Invoke(args);5 Phần tử là var result = callback?.Invoke(args);5, nếu thành viên var result = callback?.Invoke(args);3 của bài viết đó là var result = callback?.Invoke(args);5 hoặc nếu thành viên var result = callback?.Invoke(args);4 của tác giả đó là var result = callback?.Invoke(args);5. Lưu ý rằng (some-> article .author .name)2 vẫn được ném nếu mảng không có null nhưng trống rỗng (nghĩa là độ dài bằng không). var name = articles?[0]?.Author?.Name; Gọi một lambda yêu cầu (some-> article .author .name)3, vì không có sự cầu khẩn điều kiện null ( (some-> article .author .name)4 không được phép). var result = callback?.Invoke(args); Clojure[edit][edit]Clojure không có toán tử thực sự theo nghĩa các ngôn ngữ khác sử dụng nó, nhưng vì nó có thể tương tác với Java và phải thực hiện điều hướng đối tượng khi có, macro ____ 45 [10] có thể được sử dụng để thực hiện điều hướng an toàn. (some-> article .author .name) CoffeeScript[edit][edit]Nhà điều hành hiện sinh: [11] zip = lottery.drawWinner?().address?.zipcode Crystal[edit][edit]Crystal hỗ trợ phương pháp điều hướng an toàn (some-> article .author .name)6 [12] name = article.try &.author.try &.name Dart[edit][edit]Nhà điều hành truy cập thành viên có điều kiện: [13] var name = article?.author?.name Gosu[edit][edit]Nhà điều hành gọi an toàn NULL: [14] var name = article?.author?.name Toán tử gọi an toàn null không cần thiết cho các thuộc tính lớp được khai báo là thuộc tính GOSU: class Foo { var _bar: String as Bar } var foo: Foo = null // the below will evaluate to null and not return a NullPointerException var bar = foo.Bar Groovy[edit][edit]Toán tử điều hướng an toàn và toán tử chỉ số an toàn: [1] [15] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;0 JavaScript[edit][edit]Được thêm vào trong ECMAScript 2020, toán tử chuỗi tùy chọn cung cấp một cách để đơn giản hóa việc truy cập các giá trị thông qua các đối tượng được kết nối khi có thể một tham chiếu hoặc chức năng có thể không được xác định hoặc không xác định. [16] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;1 Nó ngắn mạch toàn bộ chuỗi cuộc gọi ở phía bên phải của nó: trong ví dụ sau, thanh không được "truy cập". Kotlin[edit][edit]Nhà điều hành cuộc gọi an toàn: [6] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;2 Objective-C[edit][edit]Cú pháp điều hướng thông thường có thể được sử dụng trong hầu hết các trường hợp mà không liên quan đến các thông điệp cơ bản, khi được gửi đến NULL, bị loại bỏ mà không có bất kỳ hiệu ứng xấu nào. a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;3 PHP[edit][edit]Nhà điều hành an toàn NULL đã được chấp nhận cho Php 8: [17] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;4 Python[edit][edit]Toán tử điều hướng an toàn không được hỗ trợ trong Python. Nó đã được đề xuất để đưa vào cú pháp sau: [18] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;5 Raku (Perl 6) [Chỉnh sửa][edit]Phương pháp an toàn Gọi: [19] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;6 Ruby[edit][edit]Ruby hỗ trợ toán tử điều hướng an toàn var name = articles?[0]?.Author?.Name;7 (còn được gọi là toán tử cô đơn) kể từ phiên bản 2.3.0: [5] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;7 Rust[edit][edit]Rust hỗ trợ các toán tử ________ 28 [7] và (some-> article .author .name)9 cho các cấu trúc thực hiện đặc điểm zip = lottery.drawWinner?().address?.zipcode0. [20] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;8 Scala[edit][edit]Toán tử an toàn null trong scala được cung cấp bởi thư viện dsl.scala. [21] [22] a[x]?.aMethod().aField // Evaluates to null if a[x] == null a[x].aMethod()?.aField // returns null if a[x].aMethod() evaluates to null String profileUrl = user.getProfileUrl()?.toExternalForm(); return [SELECT Name FROM Account WHERE Id = :accId]?.Name;9 Chú thích zip = lottery.drawWinner?().address?.zipcode1 có thể được sử dụng để biểu thị giá trị vô hiệu. var name = articles?[0]?.Author?.Name;0 zip = lottery.drawWinner?().address?.zipcode2 bình thường trong scala không an toàn, khi thực hiện phương thức trên giá trị var result = callback?.Invoke(args);5. var name = articles?[0]?.Author?.Name;1 Có thể tránh được ngoại lệ bằng cách sử dụng toán tử var name = articles?[0]?.Author?.Name;8 trên giá trị vô hiệu hóa thay thế: var name = articles?[0]?.Author?.Name;2 Toàn bộ biểu thức là var result = callback?.Invoke(args);5 nếu một trong số var name = articles?[0]?.Author?.Name;8 được thực hiện trên giá trị var result = callback?.Invoke(args);5. Ranh giới của toán tử an toàn var result = callback?.Invoke(args);5 var name = articles?[0]?.Author?.Name;8 là biểu thức bao quanh gần nhất có loại được chú thích là zip = lottery.drawWinner?().address?.zipcode1. var name = articles?[0]?.Author?.Name;3 Swift[edit][edit]Toán tử chuỗi tùy chọn, toán tử chỉ số [3] và cuộc gọi: var name = articles?[0]?.Author?.Name;4 TypeScript[edit][edit]Toán tử chuỗi tùy chọn đã được đưa vào bản phát hành TypeScript 3.7: [4] var name = articles?[0]?.Author?.Name;5 Visual Basic .Net [Chỉnh sửa][edit]Visual Basic 14 trở lên có var result = callback?.Invoke(args);0 (toán tử truy cập thành viên điều kiện null) và name = article.try &.author.try &.name2 (toán tử chỉ số điều kiện null), tương tự như C#. Chúng có hành vi giống như các toán tử tương đương trong C#. [23] Câu lệnh sau hoạt động giống hệt với ví dụ C# ở trên. var name = articles?[0]?.Author?.Name;6 Xem thêm [sửa][edit]
References[edit][edit]
Liên kết bên ngoài [Chỉnh sửa][edit]
|