null 허용 연산자(F#)
Nullable 연산자 한쪽 또는 양쪽에 산술 nullable 형식과 함께 사용할 이진 산술 또는 비교 연산자입니다. Nullable 형식은 데이터 소스에서 실제 값 대신 null 값을 허용 하는 데이터베이스 등에서 자주 사용할 때 발생 합니다. Null이 허용 되는 연산자는 쿼리 식에 자주 사용 됩니다. Nullable 연산자에 산술 및 비교에 대 한 nullable 형식 사이 변환 하려면 변환 연산자를 사용할 수 있습니다. 또한 null 허용 버전에 특정 쿼리 연산자입니다.
Nullable 연산자 표
다음 F# 언어에서 지원 되는 nullable 연산자입니다.
왼쪽에 null을 허용 하지 |
오른쪽에 null을 허용 하지 |
양쪽 모두 null을 허용 하지 |
설명
연산자는 nullable에 포함 되어 있는 NullableOperators 네임 스페이스에 모듈 Microsoft.FSharp.Linq. Null 허용 데이터 형식인 Nullable.
쿼리 식의 null 허용 형식 값 대신 null을 허용 하는 데이터 소스에서 데이터를 선택할 때 발생 합니다. SQL Server 데이터베이스의 테이블에 각 데이터 열의 null 값 허용 여부를 지정 하는 특성이 있습니다. Null 값이 허용 되 면 데이터베이스에서 반환 되는 데이터에서 기본 데이터 형식으로 나타낼 수 없는 null 값을 포함할 수 있습니다 int, float등. 따라서 데이터가로 반환 되는 System.Nullable<int> 대신 int, 및 System.Nullable<float> 대신 float. 실제 값을 구할 수 있습니다는 Nullable 개체를 사용 하 여는 Value 속성 및이 경우 확인할 수 있습니다는 Nullable 개체를 호출 하 여 값이 있는 HasValue 메서드. 다른 유용한 방법입니다 있는 GetValueOrDefault 값 또는 해당 형식의 기본값을 얻을 수 있도록 하는 메서드. 예: 0, "0" 값을 기본값은 0.0, 또는 false.
Nullable 형식은 같은 일반적인 변환 연산자를 사용 하 여 nullable이 아닌 기본 형식으로 변환 될 수 있습니다 int 또는 float. Nullable 형식을 nullable 형식에 대해 변환 연산자를 사용 하 여 다른 nullable 형식으로 변환할 수 있습니다. 표준 hal에서 이름이 같은 적절 한 변환 연산자가 있지만 별도 모듈에는 null 허용 여부가 모듈에는 Microsoft.FSharp.Linq 네임 스페이스입니다. 일반적으로 쿼리 식을 사용 하 여 작업 하는 경우이 네임 스페이스를 열입니다. 이 경우 접두사를 추가 하 여 null을 허용 하는 변환 연산자를 사용할 수 있습니다 Nullable. 다음 코드와 같이 적절 한 변환 연산자를 합니다.
open Microsoft.Fsharp.Linq
let nullableInt = new System.Nullable<int>(10)
// Use the Nullable.float conversion operator to convert from one nullable type to another nullable type.
let nullableFloat = Nullable.float nullableInt
// Use the regular non-nullable float operator to convert to a non-nullable float.
printfn "%f" (float nullableFloat)
출력은 10.000000입니다.
같은 연산자의 null 허용 데이터 필드를 쿼리 sumByNullable를 쿼리 식에도 존재 합니다. Null 허용 데이터 값을 사용 하는 경우 적절 한 쿼리 연산자의 null 허용 버전을 사용 해야 쿼리 연산자 nullable이 아닌 형식에 대 한 호환 형식을 nullable 형식으로 수 없습니다. 자세한 내용은 쿼리 식(F#)를 참조하십시오.
다음 예제에서는 F# 쿼리 식에서 nullable 연산자의 사용을 보여 줍니다. 첫 번째 쿼리 없이 null을 허용 하는 연산자는 쿼리를 작성 하는 것을 보여 줍니다. 두 번째 쿼리에서 null을 허용 하는 연산자를 사용 하는 동일한 쿼리를 보여 줍니다. 이 예제 코드를 사용 하도록 데이터베이스를 설정 하는 방법을 포함 하 여 전체 컨텍스트를 참조 하십시오. 연습: 형식 공급자를 사용하여 SQL 데이터베이스에 액세스(F#).
open System
open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq
[<Generate>]
type dbSchema = SqlDataConnection<"Data Source=MYSERVER\INSTANCE;Initial Catalog=MyDatabase;Integrated Security=SSPI;">
let db = dbSchema.GetDataContext()
query {
for row in db.Table2 do
where (row.TestData1.HasValue && row.TestData1.Value > 2)
select row
}
|> Seq.iter (fun row -> printfn "%d %s" row.TestData1.Value row.Name)
query {
for row in db.Table2 do
// Use a nullable operator ?>
where (row.TestData1 ?> 2)
select row
}
|> Seq.iter (fun row -> printfn "%d %s" (row.TestData1.GetValueOrDefault()) row.Name)