Что такое “точка свободный” стиль (в Функциональном программировании)?

Если вы хотите использовать mouseEntered: и mouseExited:, вам нужно использовать NSTrackingArea. Вот ссылка Ссылка класса NSTrackingArea .

Пример:

//Add this to Your imageView subclass

-(void)mouseEntered:(NSEvent *)theEvent {
    NSLog(@"Mouse entered");
}

-(void)mouseExited:(NSEvent *)theEvent
{
    NSLog(@"Mouse exited");
}

-(void)updateTrackingAreas
{ 
    [super updateTrackingAreas];
    if(trackingArea != nil) {
        [self removeTrackingArea:trackingArea];
        [trackingArea release];
    }

    int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
    trackingArea = [ [NSTrackingArea alloc] initWithRect:[self bounds]
                                                 options:opts
                                                   owner:self
                                                userInfo:nil];
    [self addTrackingArea:trackingArea];
}

87
задан smci 5 August 2019 в 04:00
поделиться

3 ответа

Достаточно взглянуть на статью в Википедии , чтобы получить свое определение:

Молчаливое программирование (программирование без точек) - это парадигма программирования, в которой определение функции не включает информацию о его аргументах, используя комбинаторы и композицию функций [...] вместо переменных.

Пример Haskell:

Обычный (вы указываете аргументы явно):

sum (x:xs) = x + (sum xs)
sum [] = 0

Без точек ( sum не имеет явных аргументов - это просто свертка с + , начиная с 0):

 sum = foldr (+) 0

Или еще проще: вместо g (x) = f (x) вы можете просто написать g = f .

Итак да: это тесно связано с каррированием (или такими операциями, как композиция функций).

60
ответ дан 24 November 2019 в 07:52
поделиться

Бесточечный стиль означает, что аргументы определяемой функции не упоминаются явно, что функция определяется посредством композиции функций.

Если у вас есть две функции, например

square :: a -> a
square x = x*x

inc :: a -> a
inc x = x+1

и если вы хотите объединить эти две функции в одну, которая вычисляет x * x + 1 , вы можете определить ее как «полная точка» следующим образом:

f :: a -> a
f x = inc (square x)

Беспочечная альтернатива - не говорить об аргументе x :

f :: a -> a
f = inc . square
29
ответ дан 24 November 2019 в 07:52
поделиться

Точечный стиль означает, что в коде явно не упоминаются его аргументы, даже если они существуют и используются.

Это работает в Haskell из-за того, как работают функции.

Например:

myTake = take

возвращает функцию, которая принимает один аргумент, поэтому нет причин явно вводить аргумент, если вы просто не хотите тоже.

4
ответ дан 24 November 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: