Pertanyaan Biarkan dan Penetapan Properti dalam satu baris


Bagaimana Anda bisa menulis kode F # berikut (atau serupa) dalam satu baris:

let contextMenu = new ContextMenuStrip()
mainForm.ContextMenuStrip <- contextMenu

Saya harus menyatakan contextMenu karena akan dibutuhkan nanti.


5
2017-11-16 14:42


asal


Jawaban:


Saya tidak memberi rekomendasi kepada Anda untuk menuliskannya pada satu baris karena ini berarti ini akan menjadi perpaduan antara #light (mode secara default sekarang) dan sintaks non #light. Jika Anda benar-benar perlu, Anda dapat menggunakan ;; seperti itu:

open System
open System.Windows.Forms

let mainForm = new Form()
let contextMenu = new ContextMenuStrip();; mainForm.ContextMenuStrip <- contextMenu;;

Jika ekspresi Anda memiliki jenis unit Anda dapat menggunakan Ekspresi Eksekusi Berurutan, yang merupakan ekspresi dari bentuk:

expr1; expr2; expr3

contohnya:

mainForm.ContextMenuStrip <- contextMenu; 5 + 6 |> ignore; mainForm.ContextMenuStrip <- null

Saya ingin menambahkan bahwa Ekspresi Eksekusi Sekuensial tidak ada hubungannya dengan mode non #light. Mereka hanya sebuah konstruksi bahasa umum.

Semoga itu membantu.


6
2017-11-16 15:28



Anda dapat mengatur properti publik yang dapat ditulisi sebagai pseudo-parameters dalam konstruktor.

let contextMenu = new ContextMenuStrip()
let form = new Form(ContextMenuStrip = contextMenu)

6
2017-11-16 16:30



Anda juga bisa mengetik

let contextMenu = new ContextMenuStrip() in mainForm.ContextMenuStrip <- contextMenu

Ini adalah sintaks OCaml, IIRC.

Edit: untuk lebih jelas: ini juga valid (#light) F # sintaks, karena F # didasarkan pada OCaml.

Saya juga tidak menyarankan melakukan ini, meskipun saya suka program pendek.


5
2017-11-16 16:33