Форум программистов, компьютерный форум, киберфорум
F# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 13

Как записать структуру внутрь класса?

27.05.2014, 21:20. Показов 2281. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа проблема заключается в следующем
Дали код, сказали на F# перевести и запихать в библиотеку, но почитав литературу и сайты разные так и не понял вот какого момента
внутри класса необходимо создать структуру, там же ее инициализировать и использовать в функциях внутри этого класса

Изменить потребовалось следующий код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    
public class CubicSpline
    {
        SplineTuple[] splines; // Сплайн
        private struct SplineTuple
        {
            public double a, b, c, d, x;
        }
        public void BuildSpline(double[] x, double[] y, int n)
        {
            splines = new SplineTuple[n];
            for (int i = 0; i < n; ++i)
            {
                splines[i].x = x[i];
                splines[i].a = y[i];
            }
     }
Может кто нибудь объяснить в каком порядке все это делать, и как создавать переменные типа структура?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2014, 21:20
Ответы с готовыми решениями:

Нарисовать уходящую внутрь структуру
Нарисовать уходящую внутрь структуру. Когда круг вписан в квадрат, то сторона квадрата равна диаметру круга. Когда в круг вписан...

Как записать структуру в файл?
есть структура struct frend { char name; char tel; };как записать ее в файл и потом считат соответственно)) заранее...

Как записать структуру в файл
У меня такая задача, создать структуру, записать ее в файл и редактировать т.е добавлять студентов или редактировать уже записанных ... ...

4
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
28.05.2014, 07:08
Может кто нибудь объяснить в каком порядке все это делать...
Внимательно изучить С# код и выбросить его.
Для сохранения совместимости со старым кодом написать чтото вроде этого.
Code
1
2
3
4
5
6
7
8
9
10
type SplineTuple = 
    { a : double; b : double; c : double; d : double; x : double }
    with static member ctorXA x a = { a = a; b = 0.0; c = 0.0; d = 0.0; x = x }
 
type CubicSpline() =
 
    let mutable splines : SplineTuple[] = [||]
 
    member this.BuildSpline (x : _ []) (y : _ []) n = 
        splines <- Array.map2 SplineTuple.ctorXA x.[.. n - 1] y.[.. n - 1]
код, сказали на F# перевести и запихать в библиотеку
Перевод С# кода в F# по сути бесполезное занятие, особенно при попытке сохранения ооп.
Полезное занятие - изначально проектировать библиотеку на F#.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
28.05.2014, 09:29
Попробую объяснить по простому.
Одна из важнейших идей функционального программирования - это отказ от ПЕРЕМЕННЫХ. То, что по английски называется variable (дословно - меняющийся). Вместо них надо использовать values (значение).
В частности, в F# переменные допускаются (mutables), но не приветствуются.
Без переменных можно программировать и на C#. Поэтому pycture неточно выразился, бесполезное занятие не вообще перевод кода из C# в F#, а такого, который заточен именно под переменные.

Ваш приведенный код - полностью предназначен для изменения значения Splines. Поэтому на F# его кое-как перевести можно, но будет уродливо.

В стиле F# будет примерно так:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type CubicSpline =
    struct
        val a: float 
        val b: float
        val c: float
        val d: float
        val x: float
        new(ax,ay) = {x=ax; a=ay;b=0.0;c=0.0;d=0.0}
    end
 
let BuildSpline (x: float[]) (y: float[]) =
    assert (x.Length = y.Length)
    let pairs = Array.zip x y
    let SplineFromXY (xy: float*float) = 
        new CubicSpline(fst xy, snd xy)
    Array.map SplineFromXY pairs
Использование:
Code
1
2
3
    let arr_x = [|0.0; 1.0; 2.0|]
    let arr_y = [|10.0; 20.0; 30.0|]
    let splines = BuildSpline arr_x arr_y
Никаких классов.
Никаких изменяемых значений. В CublicSpline инициализируются "живыми" значениями только x и a. Остальные нули. И вы после создания экземпляра их не измените. Почему? Добро пожаловать в функциональный мир. Не, можно, конечно, использовать mutable, но это уже на свой страх и риск. В вашем фрагменте кода это не нужно.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
28.05.2014, 11:56
Цитата Сообщение от dondublon Посмотреть сообщение
Одна из важнейших идей функционального программирования - это отказ от ПЕРЕМЕННЫХ.
Одна из важнейших идей, что функция, при одинаковых входных аргументах, дает одинаковый результат на выходе. А есть там переменные, при получении результата или нет, функциональное программирование не волнует.
Цитата Сообщение от dondublon Посмотреть сообщение
бесполезное занятие не вообще перевод кода из C# в F#, а такого, который заточен именно под переменные
Дело не в переменных. Дело в общей идеалогии построения кода (неизменяемые значения, паттерн матчинг, функции высших порядков, activepatterns и еще туча всего). Так что перевод C# в F# весьма напоминает ручную трансляцию ассемблера в С, и поэтому это полностью лишенное смысла занятие, писать надо с 0. Яркий пример TypeProvider'ы.

Добавлено через 1 час 27 минут
А еще абстрактные типы данных в виде Discriminated Unions.
0
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 13
29.05.2014, 17:36  [ТС]
огромное спасибо, так как были большие с этим трудности
уродливо, не уродливо, но мне дали такое задание, а сдавать как то надо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.05.2014, 17:36
Помогаю со студенческими работами здесь

Как записать структуру в файл
Как на Qt записать структуру в файл??

Как записать структуру в файл (стиль С)?
Здравствуйте, передаю структуру в файл, а туда пишет каракули. Как правильно записать структуру в файл? #include &quot;stdafx.h&quot; ...

Подскажите как из массива записать в структуру?
Подскажите как из массива записать в структуру? #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; struct DETAILS{ char name; int num; ...

Как записать в структуру данные из файла?
имеется структура struct ceh { char plan; long int num_mis; long int vipusk; } Как записать в нее данные с файла?

Как лучше реализовать структуру класса?
Есть задача создать класс авто-архив. Класс реализовал со структурой внутри класса. Создал указатель на структуру с полями, марка, модель,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru