ΠΠΎΠ΄ΡΠ»ΠΈ — F# | Microsoft Docs
- ΠΡΠ΅ΠΌΡ ΡΡΠ΅Π½ΠΈΡ: 5 ΠΌΠΈΠ½
-
Π‘ΠΎΠ°Π²ΡΠΎΡΡ
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ F# ΡΠ·ΡΠΊΠ°, ΠΌΠΎΠ΄ΡΠ»Ρ β ΡΡΠΎ Π³ΡΡΠΏΠΏΠ° F# ΠΊΠΎΠ΄ΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΈΠΏΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² F# ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.In the context of the F# language, a module is a grouping of F# code, such as values, types, and function values, in an F# program. ΠΠΎΠ΄ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΌΠΎΠ΄ΡΠ»ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΈΠΌΠ΅Π½ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.Grouping code in modules helps keep related code together and helps avoid name conflicts in your program.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡSyntax
// Top-level module declaration. module [accessibility-modifier] [qualified-namespace.]module-name declarations // Local module declaration. module [accessibility-modifier] module-name = declarations
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡRemarks
F# ΠΠΎΠ΄ΡΠ»Ρ β ΡΡΠΎ Π³ΡΡΠΏΠΏΠ° F# ΠΊΠΎΠ΄ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΠΈΠΏΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠ΄Π° Π² do
ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ.An F# module is a grouping of F# code constructs such as types, values, function values, and code in do
bindings. ΠΠ½ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠΈΠΉ ΠΊΠ»Π°ΡΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (CLR), ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ.It is implemented as a common language runtime (CLR) class that has only static members. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π»ΠΈ Π²Π΅ΡΡ ΡΠ°ΠΉΠ» ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π² ΠΌΠΎΠ΄ΡΠ»Π΅: ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.There are two types of module declarations, depending on whether the whole file is included in the module: a top-level module declaration and a local module declaration. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π΅ΡΡ ΡΠ°ΠΉΠ» ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π² ΠΌΠΎΠ΄ΡΠ»Π΅.A top-level module declaration includes the whole file in the module. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅.A top-level module declaration can appear only as the first declaration in a file.
Π ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΌΠΎΠ΄ΡΠ»Ρ, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΈΠΌΠ΅Π½ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.In the syntax for the top-level module declaration, the optional qualified-namespace is the sequence of nested namespace names that contains the module. ΠΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ.The qualified namespace does not have to be previously declared.
Π£ Π²Π°Ρ Π½Π΅Ρ ΠΎΡΡΡΡΠΏΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π² ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ.You do not have to indent declarations in a top-level module. Π£ Π²Π°Ρ ΠΎΡΡΡΡΠΏ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.You do have to indent all declarations in local modules. Π ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Ρ ΠΎΡΡΡΡΠΏΠΎΠΌ Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.In a local module declaration, only the declarations that are indented under that module declaration are part of the module.
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, Π²ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π°, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°ΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎ ΠΆΠ΅ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, Π±Π΅Π· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π±ΡΠΊΠ²ΠΎΠΉ, ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π½ΡΡ Π² Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ.If a code file does not begin with a top-level module declaration or a namespace declaration, the whole contents of the file, including any local modules, becomes part of an implicitly created top-level module that has the same name as the file, without the extension, with the first letter converted to uppercase. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ».For example, consider the following file.
// In the file program.fs.
let x = 40
ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ Π±ΡΠ» ΠΎΡΠΎΡΠΌΠ»Π΅Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:This file would be compiled as if it were written in this manner:
module Program
let x = 40
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π² ΡΠ°ΠΉΠ»Π΅, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.If you have multiple modules in a file, you must use a local module declaration for each module. ΠΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½, ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½.If an enclosing namespace is declared, these modules are part of the enclosing namespace. ΠΡΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½, ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠ°ΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ.If an enclosing namespace is not declared, the modules become part of the implicitly created top-level module. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΠ°ΠΉΠ» ΠΊΠΎΠ΄Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.The following code example shows a code file that contains multiple modules. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ΡΠ²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ
, ΠΈ MyModule1
ΠΈ MyModule2
Π²Π»ΠΎΠΆΠ΅Π½Ρ Π² ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.The compiler implicitly creates a top-level module named Multiplemodules
, and MyModule1
and MyModule2
are nested in that top-level module.
// In the file multiplemodules.fs.
// MyModule1
module MyModule1 =
// Indent all program elements within modules that are declared with an equal sign.
let module1Value = 100
let module1Function x =
x + 10
// MyModule2
module MyModule2 =
let module2Value = 121
// Use a qualified name to access the function.
// from MyModule1.
let module2Function x =
x * (MyModule1.module1Function module2Value)
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΠ»ΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π² Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΉΠ»Π°.If you have multiple files in a project or in a single compilation, or if you are building a library, you must include a namespace declaration or module declaration at the top of the file. F# ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ΡΠ²Π½ΠΎ ΠΏΡΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.The F# compiler only determines a module name implicitly when there is only one file in a project or compilation command line, and you are creating an application.
ΠΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
: public
, private
, internal
.The accessibility-modifier can be one of the following: public
, private
, internal
. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΡΠ°ΡΡΠ΅ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΡΡΡΠΏΠΎΠΌ.For more information, see Access Control. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β «public» (ΠΎΡΠΊΡΡΡΡΠΉ).The default is public.
Π‘ΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠΎΠ΄ Π² ΠΌΠΎΠ΄ΡΠ»ΡΡ Referencing Code in Modules
ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΡΠ»ΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΈΠΏΡ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ.When you reference functions, types, and values from another module, you must either use a qualified name or open the module. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½ΡΠΆΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.If you use a qualified name, you must specify the namespaces, the module, and the identifier for the program element you want. Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΡΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ Ρ ΡΠΎΡΠΊΠΎΠΉ (.), ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.You separate each part of the qualified path with a dot (.), as follows.
Namespace1.Namespace2.ModuleName.Identifier
ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.You can open the module or one or more of the namespaces to simplify the code. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½ ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ°: open
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ.For more information about opening namespaces and modules, see Import Declarations: The open
Keyword.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π΅ΡΡ ΠΊΠΎΠ΄ Π² ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΉΠ»Π°.The following code example shows a top-level module that contains all the code up to the end of the file.
module Arithmetic
let add x y =
x + y
let sub x y =
x - y
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΎΡΠΊΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ .To use this code from another file in the same project, you either use qualified names or you open the module before you use the functions, as shown in the following examples.
// Fully qualify the function name.
let result1 = Arithmetic.add 5 9
// Open the module.
open Arithmetic
let result2 = add 5 9
ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈNested Modules
ΠΠΎΠ΄ΡΠ»ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ.Modules can be nested. ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡΡΡΡΠΏ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π½Π΅ΡΠ½ΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π° Π½Π΅ Π½ΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ.Inner modules must be indented as far as outer module declarations to indicate that they are inner modules, not new modules. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°.For example, compare the following two examples. ΠΠΎΠ΄ΡΠ»Ρ
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.Module Z
is an inner module in the following code.
module Y =
let x = 1
module Z =
let z = 5
ΠΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Z
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ Y
Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.But module Z
is a sibling to module Y
in the following code.
module Y =
let x = 1
module Z =
let z = 5
ΠΠΎΠ΄ΡΠ»Ρ Z
Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ ΠΎΡΡΡΡΠΏΠ° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Y
.Module Z
Y
.module Y =
let x = 1
module Z =
let z = 5
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π½ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ, Π½ΠΎ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π²ΡΠΎΡΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡΡ Π±Π΅Π· ΠΎΡΡΡΡΠΏΠ° farther ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ.Finally, if the outer module has no declarations and is followed immediately by another module declaration, the new module declaration is assumed to be an inner module, but the compiler will warn you if the second module definition is not indented farther than the first.
// This code produces a warning, but treats Z as a inner module.
module Y =
module Z =
let z = 5
Π§ΡΠΎΠ±Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΎΡΡΡΡΠΏ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ.To eliminate the warning, indent the inner module.
module Y =
module Z =
let z = 5
ΠΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π²Π΅ΡΡ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π² ΠΎΠ΄ΠΈΠ½ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π½Π°ΠΊ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΡΡΡΡΠΏ.If you want all the code in a file to be in a single outer module and you want inner modules, the outer module does not require the equal sign, and the declarations, including any inner module declarations, that will go in the outer module do not have to be indented. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡΡΡΡΠΏΡ.Declarations inside the inner module declarations do have to be indented. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅.The following code shows this case.
// The top-level module declaration can be omitted if the file is named
// TopLevel.fs or topLevel.fs, and the file is the only file in an
// application.
module TopLevel
let topLevelX = 5
module Inner1 =
let inner1X = 1
module Inner2 =
let inner2X = 5
Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉRecursive modules
F#4.1, Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ
Π²ΡΠ΅ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΉ ΠΊΠΎΠ΄Π° Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅.F# 4.1 introduces the notion of modules which allow for all contained code to be mutually recursive. ΠΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ module rec
.This is done via module rec
. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ module rec
ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ Π² Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ.Use of module rec
can alleviate some pains in not being able to write mutually referential code between types and modules. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ:The following is an example of this:
module rec RecursiveModule =
type Orientation = Up | Down
type PeelState = Peeled | Unpeeled
// This exception depends on the type below.
exception DontSqueezeTheBananaException of Banana
type BananaPeel() = class end
type Banana(orientation : Orientation) =
member val IsPeeled = false with get, set
member val Orientation = orientation with get, set
member val Sides: PeelState list = [ Unpeeled; Unpeeled; Unpeeled; Unpeeled] with get, set
member self.Peel() = BananaHelpers.peel self // Note the dependency on the BananaHelpers module.
member self.SqueezeJuiceOut() = raise (DontSqueezeTheBananaException self) // This member depends on the exception above.
module BananaHelpers =
let peel (b: Banana) =
let flip (banana: Banana) =
match banana.Orientation with
| Up ->
banana.Orientation <- Down
banana
| Down -> banana
let peelSides (banana: Banana) =
banana.Sides
|> List.map (function
| Unpeeled -> Peeled
| Peeled -> Peeled)
match b.Orientation with
| Up -> b |> flip |> peelSides
| Down -> b |> peelSides
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ DontSqueezeTheBananaException
ΠΈ ΠΊΠ»Π°ΡΡ Banana
ΠΎΠ±Π° ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ ΠΊ Π΄ΡΡΠ³Ρ.Note that the exception DontSqueezeTheBananaException
and the class Banana
both refer to each other. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠ΄ΡΠ»Ρ BananaHelpers
ΠΈ ΠΊΠ»Π°ΡΡ Banana
ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π΄ΡΡΠ³ ΠΊ Π΄ΡΡΠ³Ρ.Additionally, the module BananaHelpers
and the class Banana
also refer to each other. ΠΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΠ°ΠΆΠ°ΡΡ Π² F# ΠΡΠ»ΠΈ Π²Ρ ΡΠ΄Π°Π»ΠΈΠ»ΠΈ rec
ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ from RecursiveModule
ΠΌΠΎΠ΄ΡΠ»Ρ.This would not be possible to express in F# if you removed the rec
keyword from the RecursiveModule
module.
ΠΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Ρ F# 4.1.This capability is also possible in Namespaces with F# 4.1.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅See also
docs.microsoft.com
y f x ΠΌΠΎΠ΄ΡΠ»Ρ
ΠΡ ΠΈΡΠΊΠ°Π»ΠΈ y f x ΠΌΠΎΠ΄ΡΠ»Ρ? ΠΠ° Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΡΠ²Π΅Ρ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π΄Π°ΠΆΠ΅ Ρ ΡΠ°ΠΌΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΈ y ΠΌΠΎΠ΄ΡΠ»Ρ f x, Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΡ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ Π²Π°ΠΌ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡΡΡ ΠΊ Π΄ΠΎΠΌΠ°ΡΠ½ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΌ, ΠΎΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Π°ΠΌ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΠΊ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ Π² Π²ΡΠ·. Π ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅ Π²Ρ Π½Π΅ Π²Π²Π΅Π»ΠΈ — Ρ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Β«y f x ΠΌΠΎΠ΄ΡΠ»ΡΒ».
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π·Π°Π΄Π°Ρ, ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡΠΎΠ², ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΈΡΠΎΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΎ Π² Π½Π°ΡΠ΅ΠΉ ΠΆΠΈΠ·Π½ΠΈ. ΠΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ°ΡΡΠ΅ΡΠ°Ρ , ΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΡΠ²Π΅ ΡΠΎΠΎΡΡΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΏΠΎΡΡΠ΅. ΠΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΅ΡΠ΅ Π² Π΄ΡΠ΅Π²Π½ΠΎΡΡΠΈ ΠΈ Ρ ΡΠ΅Ρ ΠΏΠΎΡ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π½Π°ΡΠΊΠ° Π½Π΅ ΡΡΠΎΠΈΡ Π½Π° ΠΌΠ΅ΡΡΠ΅ ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΡΡΡΡ ΠΏΠ»ΠΎΠ΄Π°ΠΌΠΈ Π΅Π΅ Π΄Π΅ΡΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ Π·Π°Π΄Π°ΡΠΈ, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ y f x ΠΌΠΎΠ΄ΡΠ»Ρ,y ΠΌΠΎΠ΄ΡΠ»Ρ f x,ΠΌΠΎΠ΄ΡΠ»Ρ y ΡΠ°Π²Π΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ x. ΠΠ° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Π²Ρ Π½Π°ΠΉΠ΄ΡΡΠ΅ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ΅ΡΠΈΡΡ Π»ΡΠ±ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ y f x ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΎΡΡΠΎ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΡ Π² ΠΎΠΊΠΎΡΠΊΠΎ ΠΈ Π½Π°ΠΆΠΌΠΈΡΠ΅ Β«ΡΠ΅ΡΠΈΡΡΒ» Π·Π΄Π΅ΡΡ ΠΈΠ»ΠΈ Π²Π²Π΅Π΄ΠΈΡΠ΅ Π² ΠΎΠΊΠ½ΠΎ Π²Π²ΠΎΠ΄Π° Π½ΠΈΠΆΠ΅ ΡΠ²ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ΄ΡΠ»Ρ y ΡΠ°Π²Π΅Π½ ΠΌΠΎΠ΄ΡΠ»Ρ x).
ΠΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Π»ΡΠ±ΡΡ Π·Π°Π΄Π°ΡΡ ΠΏΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅, Π° ΡΠ°ΠΊ ΠΆΠ΅ y f x ΠΌΠΎΠ΄ΡΠ»Ρ ΠΠ½Π»Π°ΠΉΠ½?
Π Π΅ΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ y f x ΠΌΠΎΠ΄ΡΠ»Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅ https://pocketteacher.ru. ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ΅ΡΠ°ΡΠ΅Π»Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ΅ΡΠΈΡΡ ΠΎΠ½Π»Π°ΠΉΠ½ Π·Π°Π΄Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΡΡΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π²Π΅ΡΡΠΈ ΡΠ²ΠΎΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ΅ΡΠ°ΡΠ΅Π»Π΅. Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΈ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²Π²Π΅ΡΡΠΈ Π²Π°ΡΡ Π·Π°Π΄Π°ΡΡ Π½Π° Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΉΡΠ΅. Π Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΡΡΠ°Π»ΠΈΡΡ Π²ΠΎΠΏΡΠΎΡΡ, ΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π΄Π°ΡΡ ΠΈΡ Π² ΡΠ°ΡΠ΅ ΡΠ½ΠΈΠ·Ρ ΡΠ»Π΅Π²Π° Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅.
www.pocketteacher.ru
Modules (F#)
ΒΠ‘Π°ΠΌΠ°Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ Visual Studio 2017: ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ Visual Studio 2017.
Π ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠ·ΡΠΊΠ° F# ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° F#, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΡΠΈΠΏΠΎΠ² ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ F#. ΠΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² ΠΌΠΎΠ΄ΡΠ»ΡΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π΅ ΡΠ°Π·ΡΡΠ²Π°ΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΈΠΌΠ΅Π½ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
// Top-level module declaration.
module [accessibility-modifier] [qualified-namespace.]module-name
declarations
// Local module declaration.
module [accessibility-modifier] module-name =
declarations
ΠΠΎΠ΄ΡΠ»Ρ F# β ΡΡΠΎ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΊΠΎΠ΄Π° F#, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΠΏΠΎΠ², Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ°Ρ
do
. ΠΠ½ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ»Π°ΡΡΠ° ΡΡΠ΅Π΄Ρ CLR, ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅Π½Ρ. ΠΠΌΠ΅Π΅ΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π»ΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΠΉΠ» ΡΠ΅Π»ΠΈΠΊΠΎΠΌ: ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Π² ΠΌΠΎΠ΄ΡΠ»Ρ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΠ°ΠΉΠ». ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Π΅.
Π ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ qualified-namespace
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΠΈΠΌΠ΅Π½ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΡΡΡΠΏΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΡΡΡΠΏΡ ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π²ΡΠ΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Ρ ΠΎΡΡΡΡΠΏΠΎΠΌ Π²Π½ΡΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΡΠ»ΠΈ ΡΠ°ΠΉΠ» Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈΠ»ΠΈ Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, Π²ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π°, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠ°ΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΈΠΌΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π° Π±Π΅Π· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Ρ ΠΏΡΠΎΠΏΠΈΡΠ½ΠΎΠΉ Π±ΡΠΊΠ²Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°ΠΉΠ».
// In the file program.fs.
let x = 40
ΠΡΠΎΡ ΡΠ°ΠΉΠ» Π±ΡΠ΄Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΎΠ½ Π±ΡΠ» Π·Π°ΠΏΠΈΡΠ°Π½ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅.
module Program
let x = 40
ΠΡΠ»ΠΈ Π² ΡΠ°ΠΉΠ»Π΅ ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ
ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±ΡΠ΄ΡΡ ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½. ΠΡΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΎ, ΡΡΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΠ°ΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΡΠ°ΠΉΠ» Ρ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ
Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ Multiplemodules
, Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ MyModule1
ΠΈ MyModule2
ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π²Π½ΡΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
// In the file multiplemodules.fs.
// MyModule1
module MyModule1 =
// Indent all program elements within modules that are declared with an equal sign.
let module1Value = 100
let module1Function x =
x + 10
// MyModule2
module MyModule2 =
let module2Value = 121
// Use a qualified name to access the function.
// from MyModule1.
let module2Function x =
x * (MyModule1.module1Function module2Value)
ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠ°ΠΉΠ»Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ F# Π½Π΅ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΈΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ ΡΡΡΠΎΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ accessibility-modifier
: public
, private
ΠΈΠ»ΠΈ internal
. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Access Control. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β «public» (ΠΎΡΠΊΡΡΡΡΠΉ).
ΠΡΠΈ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠΈΠΏΠΎΠ² ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΈΠΌΡ ΠΈΠ»ΠΈ ΠΎΡΠΊΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π§Π°ΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΡΠΎΡΠΊΠ°ΠΌΠΈ (.), ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.
Namespace1.Namespace2.ModuleName.Identifier
Π§ΡΠΎΠ±Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½ ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠΌ. Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ°: ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ open.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π²Π΅ΡΡ ΠΊΠΎΠ΄ ΡΠ°ΠΉΠ»Π°.
module Arithmetic
let add x y =
x + y
let sub x y =
x - y
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»Π½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡΠΊΡΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ .
// Fully qualify the function name.
let result1 = Arithmetic.add 5 9
// Open the module.
open Arithmetic
let result2 = add 5 9
ΠΠΎΠ΄ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ Π΄ΡΡΠ³ Π² Π΄ΡΡΠ³Π°. ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΎΡΡΡΡΠΏΠ°ΠΌΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²Π½Π΅ΡΠ½ΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅, Π° Π½Π΅ Π½ΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ. Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠΎΠ΄ΡΠ»Ρ Z
ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°.
module Y =
let x = 1
module Z =
let z = 5
ΠΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Z
Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Y
Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠ΄Π°.
module Y =
let x = 1
module Z =
let z = 5
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄ΡΠ»Ρ Z
ΡΠ°ΠΊΠΆΠ΅ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ ΠΎΡΡΡΡΠΏΠ° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Y
.
module Y =
let x = 1
module Z =
let z = 5
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ, ΠΈ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, Π½ΠΎΠ²ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ, Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π²ΡΠΎΡΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΡΡΡΠΏΠ° ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ.
// This code produces a warning, but treats Z as a inner module.
module Y =
module Z =
let z = 5
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΠΎΡΡΡΡΠΏΠΎΠΌ.
module Y =
module Z =
let z = 5
ΠΡΠ»ΠΈ Π²Π΅ΡΡ ΠΊΠΎΠ΄ Π² ΡΠ°ΠΉΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ Π²Π½Π΅ΡΠ½Π΅ΠΌΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π·Π½Π°ΠΊΠ° ΡΠ°Π²Π΅Π½ΡΡΠ²Π°, Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π²ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡΡΡΡΠΏΠ°. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΡΡΡΡΠΏΡ. ΠΡΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
// The top-level module declaration can be omitted if the file is named
// TopLevel.fs or topLevel.fs, and the file is the only file in an
// application.
module TopLevel
let topLevelX = 5
module Inner1 =
let inner1X = 1
module Inner2 =
let inner2X = 5
Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ ΡΠ·ΡΠΊΡ F#
Namespaces
technet.microsoft.com
Π³ΡΠ°ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ y=ΠΌΠΎΠ΄ΡΠ»Ρ x Π²ΠΈΠ΄ Π³ΡΠ°ΡΠΈΠΊΠ°? ..
ΠΡΠΎΠ΄Π΅ ΠΡΡΠΌΡΠ΅ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈ x
Π΄Π° ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ ΠΏΡΡΠΌΡΠ΅ Π² Π²ΠΈΠ΄Π΅ Π³Π°Π»ΠΎΡΠΊΠΈ)
\ | / ———\|/———->x | Π²ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ! ) ΡΠΎΠΊΠ° Ρ ΠΎΡΡΡ ΠΎΠ₯ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡΡ, ΠΈ Π»ΠΈΠ½ΠΈΡ ΡΠΏΠ»ΠΎΡΠ½Π°Ρ!
ΠΠ°Π·Π²Π°Π½ΠΈΡ Π½Π΅Ρ Π½ΠΈ Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΈ Ρ Π΅Ρ Π³ΡΠ°ΡΠΈΠΊΠ°, Π½ΠΎ Π³ΡΠ°ΡΠΈΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π³Π°Π»ΠΎΡΠΊΠΎΠΉ, Π²ΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΡΠΎΡΠΊΠΈ (0,0) ΠΈ Π΄Π°Π»ΡΡΠ΅ ΡΡΡΠΎΠΈΡΡΡ ΠΏΠΎ ΡΠΎΡΠΊΠ°ΠΌ (1,1) (2,2) (3,3) (-1,1) (-2,2) (-3,3) ΠΈ Ρ. Π΄.
ΡΠ΅Π±Π΅ ΡΡΠ΄Π° megaresheba.ru
ΠΊΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠΎΡ Π³ΡΠ°ΡΠΈΠΊ ΡΠ°ΠΌ??
touch.otvet.mail.ru
ΠΠΠ β ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ / Sandbox / Habr
ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ! Π₯ΠΎΡΠ΅Π» Π±Ρ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΡΠ°ΠΊΡΡ ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΎΠ². ΠΠ΅ΡΠΎΡΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΎΡΡΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ y=x^2 ΠΈΠ»ΠΈ y=1/x. Π ΠΊΠ°ΠΊ ΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ?ΠΠ°Π΄Π°ΡΠ° 1. ΠΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ y=|x| y=|x-1|.
Π Π΅ΡΠ΅Π½ΠΈΠ΅. Π‘ΡΠ°Π²Π½ΠΈΠΌ Π΅Π³ΠΎ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ y=|x|.ΠΡΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
x ΠΈΠΌΠ΅Π΅ΠΌ |x|=x. ΠΠ½Π°ΡΠΈΡ, Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π³ΡΠ°ΡΠΈΠΊ y=|x| ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΌ y=x, ΡΠΎ Π΅ΡΡΡ ΡΡΠ° ΡΠ°ΡΡΡ Π³ΡΠ°ΡΠΈΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΡΡΡΠΌ, Π²ΡΡ
ΠΎΠ΄ΡΡΠΈΠΌ ΠΈΠ· Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΏΠΎΠ΄ ΡΠ³Π»ΠΎΠΌ 45 Π³ΡΠ°Π΄ΡΡΠΎΠ² ΠΊ ΠΎΡΠΈ Π°Π±ΡΡΠΈΡΡ. ΠΡΠΈ x< 0 ΠΈΠΌΠ΅Π΅ΠΌ |x|= -x; Π·Π½Π°ΡΠΈΡ, Π΄Π»Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
x Π³ΡΠ°ΡΠΈΠΊ y=|x| ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π±ΠΈΡΡΠ΅ΠΊΡΡΠΈΡΠΎΠΉ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ³Π»Π°.
ΠΠΏΡΠΎΡΠ΅ΠΌ, Π²ΡΠΎΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ Π³ΡΠ°ΡΠΈΠΊΠ° (Π΄Π»Ρ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
X) Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ, Π΅ΡΠ»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ y=|x| β ΡΡΡΠ½Π°Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ |-a|=|a|. ΠΠ½Π°ΡΠΈΡ, Π³ΡΠ°ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ y=|x| ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ΅Π½ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΈ Oy, ΠΈ Π²ΡΠΎΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ, ΠΎΡΡΠ°Π·ΠΈΠ² ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΈ ΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠ°ΡΡΡ, Π½Π°ΡΠ΅ΡΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ
x. ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π³ΡΠ°ΡΠΈΠΊ:
y=|x|
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π±Π΅ΡΡΠΌ ΡΠΎΡΠΊΠΈ (-2; 2) (-1; 1) (0; 0) (1; 1) (2; 2).
Π’Π΅ΠΏΠ΅ΡΡ Π³ΡΠ°ΡΠΈΠΊ y=|x-1|. ΠΡΠ»ΠΈ Π β ΡΠΎΡΠΊΠ° Π³ΡΠ°ΡΠΈΠΊΠ° Ρ=|x| Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ (a;|a|), ΡΠΎ ΡΠΎΡΠΊΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠ° y=|x-1| Ρ ΡΠ΅ΠΌ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Y Π±ΡΠ΄Π΅Ρ ΡΠΎΡΠΊΠ° A1(a+1;|a|). (ΠΠΎΡΠ΅ΠΌΡ?) ΠΡΡ ΡΠΎΡΠΊΡ Π²ΡΠΎΡΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· ΡΠΎΡΠΊΠΈ Π(a;|a|) ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΠΊΠ° ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΎΡΠΈ Ox Π²ΠΏΡΠ°Π²ΠΎ. ΠΠ½Π°ΡΠΈΡ, ΠΈ Π²Π΅ΡΡ Π³ΡΠ°ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ y=|x-1|ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈΠ· Π³ΡΠ°ΡΠΈΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ y=|x| ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΎΡΠΈ Ox Π²ΠΏΡΠ°Π²ΠΎ Π½Π° 1.
ΠΠΎΡΡΡΠΎΠΈΠΌ Π³ΡΠ°ΡΠΈΠΊΠΈ:
y=|x-1|
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π±Π΅ΡΡΠΌ ΡΠΎΡΠΊΠΈ (-2; 3) (-1; 2) (0; 1) (1; 0) (2; 1).
ΠΡΠΎ Π±ΡΠ»Π° ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠ°Ρ Π·Π°Π΄Π°ΡΠΊΠ°. Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π² ΡΠΆΠ°Ρ.
ΠΠ°Π΄Π°ΡΠ° 2. ΠΠΎΡΡΡΠΎΠΉΡΠ΅ Π³ΡΠ°ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ y=3*|x-4| β x + |x+1|.
Π Π΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΉΠ΄Π΅ΠΌ ΡΠΎΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π² Π½ΡΠ»Ρ, Ρ.Π΅. ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Β«ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅Β» ΡΠΎΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΠΈΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ Π±ΡΠ΄ΡΡ Ρ
=-1 ΠΈ Ρ
=4. Π ΡΡΠΈΡ
ΡΠΎΡΠΊΠ°Ρ
ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΠΊ.
ΠΡΡΡΡ x<-1. Π’ΠΎΠ³Π΄Π° Ρ
+1<0, |x+1|=-x-1; x-4<0, |x-4|=-x+4; Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ y= 3(-Ρ
+4)-Ρ
+(-Ρ
-1)= -5Ρ
+11.
ΠΡΡΡΡ -1< = x < = 4. Π’ΠΎΠ³Π΄Π° Ρ
+1>0, |x+1|=x+1; x-4<0, |x-4|=-x+4; Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ y= 3(-Ρ
+4)-Ρ
+(Ρ
+1)= -3Ρ
+13.
ΠΡΡΡΡ Ρ
>4. Π’ΠΎΠ³Π΄Π° Ρ
+1>0, |x+1|=x+1, x-4>0; |x-4|=x-4; Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Ρ= 3(Ρ
-4)-Ρ
+Ρ
+1= 3Ρ
-11.
ΠΠ½Π°ΡΠΈΡ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ΄ΠΈΠ½)
{ Ρ= -5Ρ
+11, ΠΏΡΠΈ x<-1
{ y= -3Ρ
+13, ΠΏΡΠΈ -1< = x < = 4.
{ y= 3Ρ
-11, ΠΏΡΠΈ Ρ
>4
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π±Π΅ΡΡΠΌ ΡΠΎΡΠΊΠΈ (1; 6) (2; 1)
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π²ΡΠΎΡΠΎΠ³ΠΎ Π±Π΅ΡΡΠΌ ΡΠΎΡΠΊΠΈ (3; 4) (4; 1)
ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ Π±Π΅ΡΡΠΌ ΡΠΎΡΠΊΠΈ (3; -2) (4; 1)
ΠΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π·Π°Π΄Π°ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ.
ΠΠ°Π΄Π°ΡΠ° 3. ΠΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ y= |1/4 x^2 β |x| β 3|.
Π Π΅ΡΠ΅Π½ΠΈΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ y= |f(|x|)| ΡΡΡΠ½Π°Ρ. ΠΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π΄Π»Ρ x>=0 y= f(x) Π³ΡΠ°ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π°ΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎ ΠΎΡΡΠ°Π·ΠΈΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΈ Oy(ΡΡΠΎ Π³ΡΠ°ΡΠΈΠΊ y= |1/4 x^2 β x β 3|.), ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΡΡ ΡΠ°ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΏΠΎΠ»ΡΠΏΠ»ΠΎΡΠΊΠΎΡΡΠΈ, ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΠΎ ΠΎΡΡΠ°Π·ΠΈΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠΈ Ox (y= 1/4 x^2 β |x| β 3.).
ΠΠΎΡ ΡΡΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ Π²ΡΠΉΠ΄Π΅Ρ:
y= |1/4 x^2 β |x| β 3|
ΠΡΠ°ΠΊ, Π²ΡΠ΅ΠΌ ΡΠΏΠ°ΡΠΈΠ±ΠΎ! Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡ Π±Π°Π·Ρ Π·Π½Π°Π½ΠΈΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ! Π ΡΠΎ Π΅Π³ΠΎ ΡΠ°ΠΊ Π²ΡΠ΅ Π±ΠΎΡΡΡΡ.
ΠΠΎΡ ΡΡΡΠ»ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²Π°ΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ:
habr.com
ΠΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΡΠ΅ΠΌΡ: ΠΠΎΠ΄ΡΠ»Ρ 10: ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Flash C28x
Π¦ΠΈΡΡΠΎΠ²ΠΎΠΉ ΡΠΈΠ³Π½Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ TMS320F2812
Texas Instruments Incorporated
Β | ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ Flash |
Β | Flash ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π° Π² ΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎ 128 Π°Π΄ΡΠ΅ΡΠΎΠ² |
Β | ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΊΡΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ |
Β | Π΄ΠΎΡΡΡΠΏΠ° Π²Π½ΡΡΡΠΈ |
Β | ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌ |
Β | OTP — ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ |
Β | ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΡΠ»Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ |
Β | ΡΠ°ΠΊΡΠΎΠ² |
Β | ΡΠΈΠ³Π½Π°Π»Π° SYSCLKOUT |
Β | ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Β«ΡΠ±ΡΠΎΡΒ» ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ |
Β | Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅! |
Β | ΠΠΎΠ΄ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Flash Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΈΠ· Flash |
Β | ΠΏΠ°ΠΌΡΡΠΈ ! |
*** ΠΈΠ· ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ F281x ***
ΠΠ»Ρ 150 ΠΠΡ, PAGEWAIT = 5, RANDWAIT = 5, OTPWAIT = 8 ΠΠ»Ρ 135 ΠΠΡ, PAGEWAIT = 4, RANDWAIT = 4, OTPWAIT = 8
Π£ΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈΠ· Flash:
ΠΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ Flash (Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠ΄Π°
ΡΠΎΠ»ΡΠΊΠΎ)
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | 16 ΠΈΠ»ΠΈ | Β | Β | Β | Β | Β | Β | |
Β | Β | Β | Β | Β | Β | Β | 64 | Β | Β | Β | 32 | Β | Β | Β | Β | Β | Β | Β |
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | ||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | |||||
64 | Β | Β | Β | Β | Β | Β | Β | Β | Π±ΠΈΡΠ½Π°Ρ | Β | Β | Β | ΠΠΎΠ΄ΡΠ»Ρ | Β | ||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | ||||||||
Β | Β | Β | Β | Β | Β | Β | Β | ΠΎΡΠΏΡΠ°Π²ΠΊΠ° | Β | Β | Π΄Π΅ΠΊΠΎΠ΄Π΅ΡΠ° | Β | ||||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | |||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | ΡΠ΄ΡΠ° C28x | Β | ||
Β | Β | ΠΡΠ±ΠΎΡΠΊΠ° | Β | 2-Ρ | Β | Β | Β | Β | Β | Β | Β | |||||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | ||||||
Β | Π²ΡΡΠΎΠ²Π½Π΅Π½Π½Π°Ρ | ΡΡΠΎΠ²Π½Π΅Π²Ρ | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | ||||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | |||||||||
Β | Β | ΠΏΠΎ 64 Π±ΠΈΡΠ° | ΠΉ Π±ΡΡΠ΅ΡΠ Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ½ΠΎΠ³ΠΎ | |||||||||||||||
Β | Β | Β | Β | Β | Β | Π²ΡΠ±ΠΎΡΠΊΠΈ | Β | Β | ΡΠ΅ΠΆΠΈΠΌΠ° Flash | |||||||||
Β | Β | Β | Β | Β | Β | Β | Β | 0 = Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) | ||||||||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | 1 = ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ | |||||||
FOPT @ 0x00 0A80 | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | |||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | ||||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | ||||||
15 | Β | Β | Β | Β | Β | Β | Β | 1 | Β | 0 | Β | Β | ||||||
Β | Β | Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΎ | Β | Β | Β | Β | ENPIPE | Β | ||||||||||
Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β | Β |
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ | ||||
ΠΠ΄ΡΠ΅Ρ | ΠΠΌΡ | Flash | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ | |
0x00 | 0A80 FOPT | Π Π΅Π³ΠΈΡΡΡ ΠΎΠΏΡΠΈΠΉ Flash | ||
0x00 | 0A82 FPWR | Π Π΅Π³ΠΈΡΡΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΏΠΈΡΠ°Π½ΠΈΡ Flash | ||
0x00 | 0A83 FSTATUS | Π Π΅Π³ΠΈΡΡΡ ΡΡΠ°ΡΡΡΠ° Flash | ||
0x00 | 0A84 FSTDBYWAIT | Π Π΅Π³ΠΈΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Flash ΠΈΠ· ΡΠΏΡΡΠ΅Π³ΠΎ | ||
0x00 | 0A85 FACTIVEWAIT | Π² ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ | Β | |
Π Π΅Π³ΠΈΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Flash ΠΈΠ· ΡΠ΅ΠΆΠΈΠΌΠ° | ||||
0x00 | 0A86 FBANKWAIT | ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π² ΡΠΏΡΡΠΈΠΉ | ||
Π Π΅Π³ΠΈΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΡΠΈ ΡΠΈΠΊΠ»Π°Ρ ΡΡΠ΅Π½ΠΈΡ Fla | ||||
0x00 | 0A87 FOTPWAIT | Π Π΅Π³ΠΈΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΡΠΈ ΡΠΈΠΊΠ»Π°Ρ ΡΡΠ΅Π½ΠΈΡ OTP |
FPWR: ΠΠ»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΊΡΡΠΎΡΠ½Π΅ΡΠ³ΠΈΠΈ β ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Flash/OTP Π²
ΡΠΏΡΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ; Flash Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π΅ΡΠ½Π΅ΡΡΡ Π² Π°ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΠΏΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ΅ Π² Flash/OTP
FSTATUS: ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π±ΠΈΡΡ ΡΡΠ°ΡΡΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΠΆΠΈΠΌ
ΡΠ½Π΅ΡΠ³ΠΎΡΠ±Π΅ΡΠ΅ΠΆΠ΅Π½ΠΈΡ)
FSTDBYWAIT: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ ΡΠΈΠΊΠ»ΠΎΠ² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΡΠΈ
ΠΏΡΠΎΠ±ΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΈΠ· ΡΠΏΡΡΠ΅Π³ΠΎ ΠΈΠ»ΠΈ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ
FACTIVEWAIT: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ ΡΠΈΠΊΠ»ΠΎΠ² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΡΠΈ
ΠΏΡΠΎΠ±ΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΈΠ· ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π² Π°ΠΊΡΠΈΠ²Π½ΡΠΉ
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΡΠ°ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Ρ β ΡΠΌΠΎΡΡΠΈΡΠ΅ βTMS320F28x DSP
System Control and Interrupts Reference Guide,β SPRU078, Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ 10 — 6
ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
ΠΡΠ½ΠΎΠ²Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Flash
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°Π³ΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Flash:
Β | Β | Β | Β |
Β | ΠΠ»Π³ΠΎΡΠΈΡΠΌ | Π€ΡΠ½ΠΊΡΠΈΠΈ | |
1. | Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ | Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠ΅Ρ Π±ΠΈΡ Π² Π½ΠΎΠ»Ρ, Π·Π°ΡΠ΅ΠΌ Π² Π΅Π΄ΠΈΠ½ΠΈΡ | |
2. | ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ Π±ΠΈΡ Π² Π½ΠΎΠ»Ρ | ||
3. | ΠΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ | ΠΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ flash | |
Β | Β | Β | Β |
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΈΡΠ°Π΅ΠΌΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π΄Π°Π½Π½ΡΡ
-ΡΠ΅ΠΊΡΠΎΡ (4Π ΡΠ»ΠΎΠ²Π° / 8K ΡΠ»ΠΎΠ² / 16K ΡΠ»ΠΎΠ²)
ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ β ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ!
ΠΠ°ΠΆΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΡΡ ΡΠ»Π΅ΠΊΡΡΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π³Π° ΡΡΠΈΡΠ°Π½ΠΈΡ: Π΅ΡΠ»ΠΈ CSM ΠΏΠ°ΡΠΎΠ»Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ,
CSM Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ Π½Π°Π²ΡΠ΅Π³Π΄Π°!
ΠΠ΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π°!
(Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΠΎΡ Π·Π° ΡΠ΅ΠΊΡΠΎΡΠΎΠΌ)
Π£ΡΠΈΠ»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Flash
Code Composer Studio Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ JTAG) *
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ Flash ΠΎΡ TI (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ΅ΡΠ΅Π· SCI) *
ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ
Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ΅ΡΠ΅Π· GPIO)
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ· ΠΠΠ£
ΡΠ΅ΠΌ SCI
ΠΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ flash Π²
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
API Π°Π»Π³ΠΎΡΠΈΡΠΌΡ* ΠΠΎΡΡΡΠΏΠ½ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡΠ½Π° ΡΠ°ΠΉΡΠ΅ TII:: www..tiiFlash..com 10 — 9
ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΡΡ TI
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Flash Π΄Π»Ρ Code Composer Studio
studfiles.net