2010-03-17 38 views
9

Tôi đang cố gắng thực hành F # bằng cách viết các kịch bản giao diện điều khiển nhỏ trong F # thay cho phương thức viết tập lệnh/tập lệnh bó thông thường của tôi. Tôi hiện đang chạy chúng bằng cách sử dụng "fsi script.fsx [args]". Có cách nào tôi có thể liên kết các tập tin fsx với fsi để tôi có thể chạy chúng trực tiếp như "script.fsx [args]"?Thực thi các script F #

+3

Mặc dù viết tập lệnh đơn giản và chạy chúng chắc chắn là một tùy chọn, tôi nghĩ rằng việc học F # tương tác từ Visual Studio dễ dàng hơn rất nhiều. Bạn có thể bắt đầu bằng cách tạo một "F # Script" mới (File -> New -> File ...) và sau đó bắt đầu viết một số mã (theo thứ tự các loại). Sau đó, bạn có thể chọn một số phần của mã và đánh giá nó trong cửa sổ tương tác F # bằng cách tiếp tục [Alt] + [Enter]. –

+3

@Tomas - Tôi nghĩ anh ấy có nghĩa là anh ấy viết kịch bản như là thực hành viết mã thực sự thực hiện những điều thực tế, trong khi hoàn thành một nhu cầu anh ấy có cùng một lúc (có vẻ như anh ấy viết rất nhiều kịch bản) –

+0

Tomas: Một điều không không rõ ràng từ mô tả của bạn: bạn vẫn cần phải mở thủ công cửa sổ tương tác F # cho thủ thuật Alt-Enter để hoạt động. Nhưng một mẹo hay! Cảm ơn bạn! – itowlson

Trả lời

7

Có thể.

Có hai phím ở đây:

  1. Bạn cần phải ràng buộc một ứng dụng để thực hiện để mở rộng ".fsx". Cách chính xác để làm điều này có thể thay đổi một chút giữa các phiên bản hệ điều hành (tôi chỉ thực hiện điều này trong quá khứ bằng cách chỉnh sửa registry trực tiếp, vì vậy tôi không thể cung cấp giải pháp chung ở đây); chắc chắn rằng các lệnh được thực thi không bao gồm các đối số kịch bản (như %*), do đó vỏ \ open \ nhập lệnh trong registry cho các ràng buộc nên trông giống như phản ứng

    "c:\Program Files\FSharp-1.9.9.9\bin\fsi.exe" "@%1" %*

    Xem Gradbot để biết thêm chi tiết.

  2. Bạn có thể muốn thêm tiện ích bạn muốn kích hoạt thực thi tập lệnh (".fsx" trong trường hợp này) vào biến môi trường PATHEXT, vì vậy CMD.exe có thể tìm thấy tập lệnh ngay cả khi bạn không chỉ định phần mở rộng của tập lệnh. Một cảnh báo: nếu bạn lo ngại về bảo mật của hệ thống, hãy xem xét lại bước này - thực tế là VBScripts được đăng ký trên Windows XP và các hệ thống cũ hơn để cung cấp một tính năng tương tự đã được khai thác trong quá khứ. nếu điều này vẫn đúng trên Vista hoặc windows 7).
+2

Bạn cũng có thể sử dụng lệnh "ftype" và "assoc" tại dòng lệnh (ít nhất là trong tất cả các phiên bản Windows mà tôi đã thử) để thực hiện # 1. – brianary

4

Vì không có câu trả lời cho đến nay, tôi sẽ cố gắng biến nhận xét trước đó của tôi thành câu trả lời với một số chi tiết khác.

Tôi chỉ cố gắng để tạo ra một cửa sổ hiệp hội tiêu chuẩn cho * .fsx file để mở chúng tự động trong fsi.exe và nó hoạt động không có vấn đề - khi bạn mở fsx tập tin, nó chạy F # Interactive và tự động đánh giá nội dung của tệp. Điều này tương ứng với việc chạy lệnh:

> fsi.exe test.fsx 

Tuy nhiên, tôi nghĩ rằng việc học F # tương tác từ Visual Studio dễ dàng hơn nhiều. Ngay cả khi bạn không có giấy phép, bạn có thể sử dụng Visual Studio Shell with the free F# plugin. Tôi nghĩ SharpDevelop cũng cung cấp sự tích hợp tương tự (nhưng có lẽ không phải với một số hạn chế). Cách đơn giản nhất để bắt đầu là tạo một "Tập lệnh F #" mới (Tệp -> Mới -> Tệp ...) và sau đó bắt đầu viết một số mã (theo thứ tự các loại). Sau đó, bạn có thể chọn một số phần của mã và đánh giá nó trong cửa sổ tương tác F # bằng cách perssing [Alt] + [Enter]. Trước tiên, bạn cần phải mở cửa sổ tương tác F #, có thể được thực hiện bằng cách sử dụng [Ctrl] + [Alt] + [F] hoặc bạn có thể tìm thấy nó trong mục menu View -> Other Windows.

Tôi nghĩ hầu hết các webcast F # đều sử dụng F # Interactive theo cách này, vì vậy nếu bạn nhìn vào một số trong số đó, bạn nên có ý tưởng tốt về cách sử dụng nó. Tìm kiếm ví dụ tại How Do I? video tại www.fsharp.net hoặc F# videos at Channel 9.

+1

Tôi nghĩ rằng anh ấy đang cố gắng thay thế hàng loạt tập tin với F # script (đó là ông đã yêu cầu nếu có một cách để chỉ trỏ đến một tập tin fsx). Cảm ơn câu trả lời. – Amir

1

Here's hướng dẫn cách thiết lập liên kết trong cửa sổ 7.

Các vấn đề liên quan